<?php

class adminobjednavkaController extends baseadminController {

  function __construct() {
    $this->controller_name = 'Objednávky';
    $this->controller_fname = 'adminobjednavka';
    $this->controller_info = 'Správa objednávek.';
    parent::__construct();
    $this->entita_classname = 'Objednavka';
  }

  public function seznam($args)	{
  	
    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita);
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
//$result = dibi::test($query);
    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'text'	 => ' '
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena',
    	'S_NAZEV' => 'Stav',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
    	'S_NAZEV' => 'a_c',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
    	'S_NAZEV' => 'a_c',
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    );
		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function seznamnove($args)	{

    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');

    $this->registry->jscript->addScript('$(function() {
    	$("#date_od").datepicker({showOn: \'button\', buttonImage: \''.URL.'image/calendar.gif\', buttonImageOnly: true});
    	$("#date_do").datepicker({showOn: \'button\', buttonImage: \''.URL.'image/calendar.gif\', buttonImageOnly: true});
    });');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita, array('STAV' => 1 ));
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
		$result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'prijemupravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena celkem',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $before_table = '<table><tr><th>Datum vytvoření: </th>
			<td> od <input type="text" id="date_od" name="DT_VYTVOREN_OD" value="'.@$_POST['DT_VYTVOREN_OD'].'" /> do <input type="text" id="date_do" name="DT_VYTVOREN_DO" value="'.@$_POST['DT_VYTVOREN_DO'].'"  />
			</td></tr></<table>';

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    ,$before_table);
		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function prijemupravit($args) {

  	$id = @$args[0];
    $form_id = 'PrijemObjednavky';
		$entita = new $this->entita_classname();

    if ($this->registry->form_send) {
    	$_POST = array_merge($entita->loadById($id),$_POST);

    	if (isset($_POST['uloz'])) {
    		$_POST['stav'] = 3;
    		$akce_text = 'potvrzena';
    	}
    	elseif (isset($_POST['storno'])) {
    		$_POST['stav'] = 7;
    		$akce_text = 'stronována';
    	}

      if (Validate::entita($entita) !== false) {

        $entita->upravit($id,$form_id);
        Tools::setMessage('Objednávka byla '.$akce_text.'.', '', 1);
        Tools::redirect(Tools::controllerlink($this->controller_fname, 'seznamnove'));


      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje'.$valid_err, CSS_ERR);
      }
    }
    
    $item = $entita->getInfo($id, true);

		$this->html .= '<h1>Přijetí objednávky</h1>';
		$this->html .= '<div id="adresy"><div class="adresa">
  					<h2> Fakturační adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['FA_TITUL'].' '.$item['FA_JMENO'].' '.$item['FA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['FA_ULICE'].' '.$item['FA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['FA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['FA_PSC'].'<br />
        		<br />'.(empty($item['FA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['FA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['FA_ICO'].'<br /><b>DIČ:</b> '.$item['FA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['FA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['FA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>';
		
		$this->html .= '<div class="adresa">
  					<h2> Dodací adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['DA_TITUL'].' '.$item['DA_JMENO'].' '.$item['DA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['DA_ULICE'].' '.$item['DA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['DA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['DA_PSC'].'<br />
        		<br />'.(empty($item['DA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['DA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['DA_ICO'].'<br /><b>DIČ:</b> '.$item['DA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['DA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['DA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>
					<hr class="cleaner_left">
					</div>';
		
		$this->html .= '<table summary="Objednavkaprehled" class="seznam" cellspacing="0">
      <thead><tr>
      	<th>Id</th>
      	<th>Katalog. č.</th>
        <th>Produkt</th>
        <th>Množství</th>
        <th>Cena za kus</th>
        <th>Celková cena</th>
      </tr></thead>';
		
		$result = dibi::query('SELECT PO.MNOZSTVI_OBJ AS MNOZSTVI,
			(PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK) AS MY_CENA,
			((PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK)*PO.MNOZSTVI_OBJ) AS CENA_CELKEM,
			P.ID, P.NAZEV, P.KATALOG_CISLO, P.REWRITE_LINK
			FROM produkty_objednavka PO
			INNER JOIN PRODUKT P ON P.ID = PO.ID_PROD
			WHERE ID_OBJ = %i', $entita->id);
		
		foreach($result as $row) {
			$this->html .= '<tr>
					<td>'.$row['ID'].' </td>
					<td>'.$row['KATALOG_CISLO'].' </td>
          <td><a href="'.Tools::productLink($row['REWRITE_LINK']).'">'.$row['NAZEV'].'</a></td>
          <td class="a_c">'.$row['MNOZSTVI'].' Ks</td>
          <td class="a_r">'.number_format($row['MY_CENA'],2,',', ' ').' Kč</td>
          <td class="a_r">'.number_format($row['CENA_CELKEM'],2,',', ' ').' Kč</td>
        </tr>';
		}

		$this->html .= '</table>';

    $form = new Form($form_id, '', 'post', array('class' => 'myForm'));
    $form->setEntitaRef($entita);
    $form->setValue($item);

    if (count($entita->stavy) > 0) {
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_c'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'storno', 'Stornovat objednávku');
      $form->addInput('submit', 'uloz', 'Potvrdit objednávku');
      $form->closeTag();
    }
    else {
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addInnerHTML('<h3>Stav: '.$entita->my_stav.'</h3>');
      $form->addInnerHTML('Nemáte oprávnění pro modifikaci záznamu v uvedeném stavu.<br /><br />');
      $form->closeTag();
    }
    $form->closeFieldset();
    $this->html .= $form->get();
    
    $this->setView();

  }

  public function seznamzpracovani($args)	{
  	
    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita, array('STAV' => 3 ));
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
//$result = dibi::test($query);
    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'upravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena celkem',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $before_table = '<table><tr><th>Datum vytvoření: </th>
			<td> od <input type="text" id="date_od" name="DT_VYTVOREN_OD" value="'.@$_POST['DT_VYTVOREN_OD'].'" /> do <input type="text" id="date_do" name="DT_VYTVOREN_DO" value="'.@$_POST['DT_VYTVOREN_DO'].'"  />
			</td></tr></<table>';

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    ,$before_table);

		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function upravit($args) {

  	$id = @$args[0];
    $form_id = 'UpravitObjednavky';
		$entita = new $this->entita_classname();

    if ($this->registry->form_send) {
    	$_POST = array_merge($entita->loadById($id),$_POST);
    	if (Validate::entita($entita) !== false) {  	

      	if (isset($_POST['rozpracovane'])) {
      		$_POST['stav'] = 4; 
      		Tools::setMessage('Objednávka byla zařazena do rozpracovaných.', '', 1);
      		$redirect = Tools::controllerlink($this->controller_fname, 'seznamzpracovani');
      	}
      	else {
      		$redirect = Tools::controllerlink($this->controller_fname, 'seznamrozpracovane');
      	}

    	  $ids = array_keys($_POST['stav_produktu']);
      	$result = dibi::query('SELECT ID, STAV FROM PRODUKTY_OBJEDNAVKA PO WHERE ID IN (%i)', $ids);
      	$zmeny = array();
      	
      	foreach($result as $item) {
      		if ($item['STAV'] != 4) {
        		if ($item['STAV'] != $_POST['stav_produktu'][$item['ID']]) {
        			$zmeny[$item['ID']] = $_POST['stav_produktu'][$item['ID']];
        		}
      		}
      	}

      	if (count($zmeny) > 0) {
      		if ($entita->stav == 3) {
      			$entita->stav = 4;
      		}
      		foreach($zmeny as $key=>$value) {
      			dibi::query('UPDATE PRODUKTY_OBJEDNAVKA SET STAV = %i WHERE ID = %i', $value, $key);
      		}
      		Tools::setMessage('Změny byly uloženy', '', 1);
      	}

      	$pripraven = true;
      	if ($_POST['stav'] == 6) {
      		Tools::setMessage('Objednávka byla vyřízena.', '', 1);
      		foreach($_POST['stav_produktu'] as $stav) {
      			if ($stav != 2 AND $stav != 5) {
      				$pripraven = false;
      				Tools::setMessage('Objednávka nemůže být vyřízena, pokud nejsou všechy produkty ve stavu Připraven, nebo Stornován.', '', 1);
      				$redirect = Tools::controllerlink($this->controller_fname, 'upravit', array($entita->id));
      				$_POST['stav'] = 5;
      			}
      		}
      	}

  			if ($pripraven) {
  				$entita->setFromPost();
          $entita->update();
  			}
        Tools::redirect($redirect);
      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje'.$valid_err, CSS_ERR);
      }
    }

    $objednavka = $entita->getInfo($id, true);
		$item = $objednavka;
		$this->html .= '<h1>Přijetí objednávky</h1>';
		$this->html .= '<div id="adresy"><div class="adresa">
  					<h2> Fakturační adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['FA_TITUL'].' '.$item['FA_JMENO'].' '.$item['FA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['FA_ULICE'].' '.$item['FA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['FA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['FA_PSC'].'<br />
        		<br />'.(empty($item['FA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['FA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['FA_ICO'].'<br /><b>DIČ:</b> '.$item['FA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['FA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['FA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>';

		$this->html .= '<div class="adresa">
  					<h2> Dodací adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['DA_TITUL'].' '.$item['DA_JMENO'].' '.$item['DA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['DA_ULICE'].' '.$item['DA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['DA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['DA_PSC'].'<br />
        		<br />'.(empty($item['DA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['DA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['DA_ICO'].'<br /><b>DIČ:</b> '.$item['DA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['DA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['DA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>
					<hr class="cleaner_left">
					</div>';

  	$result = dibi::query('SELECT STAV_ID,NAZEV FROM stav s WHERE ENTITA = "PRODUKT_OBJEDNAVKA";');
  	$stavy = array();
		foreach($result as $item) {
			$stavy[$item['STAV_ID']] = $item['NAZEV'];
		}

		$result = dibi::query('SELECT S.`ID_STAV_START`, S.`ID_STAV_CIL`  FROM STAVY_PRECHOD S WHERE ENTITA = "PRODUKT_OBJEDNAVKA";');
		$prechody = array();
		foreach($result as $item) {
		  if ($item['ID_STAV_CIL'] != 4) {
				$prechody[$item['ID_STAV_START']][$item['ID_STAV_CIL']] = true;
		  }
		  else {
		  	$prechody[$item['ID_STAV_START']] = array();
		  }
		}

		$result = dibi::query('SELECT PO.MNOZSTVI_OBJ AS MNOZSTVI,PO.ID, PO.ID_PROD,
			(PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK) AS MY_CENA,
			((PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK)*PO.MNOZSTVI_OBJ) AS CENA_CELKEM,
			 P.NAZEV, P.KATALOG_CISLO, P.REWRITE_LINK, PO.STAV
			FROM produkty_objednavka PO
			INNER JOIN PRODUKT P ON P.ID = PO.ID_PROD
			WHERE ID_OBJ = %i', $entita->id);

		$table = '<table summary="Objednavkaprehled" class="seznam" cellspacing="0">
      <thead><tr>
      	<th>Id</th>
      	<th>Katalog. č.</th>
        <th>Produkt</th>
        <th>ks</th>
        <th>Cena/ks</th>
        <th>Cena celkem</th>
        <th>Stav produktu</th>
      </tr></thead>';

		foreach($result as $row) {
			$table .= '<tr>
					<td>'.$row['ID_PROD'].'</td>
					<td>'.$row['KATALOG_CISLO'].' </td>
          <td><a href="'.Tools::productLink($row['REWRITE_LINK']).'">'.$row['NAZEV'].'</a></td>
          <td class="a_c">'.$row['MNOZSTVI'].' Ks</td>
          <td class="a_r">'.number_format($row['MY_CENA'],2,',', ' ').' Kč</td>
          <td class="a_r">'.number_format($row['CENA_CELKEM'],2,',', ' ').' Kč</td>
          <td><select name="stav_produktu['.$row['ID'].']">
          <option value="'.$row['STAV'].'" >'.$stavy[$row['STAV']].'</option>';
//Debug::getVar($prechody);
//
			if (@is_array($prechody[$row['STAV']])) {
  			foreach(@$prechody[$row['STAV']] as $key=>$item) {
  				$table .= '<option value="'.$key.'">'.$stavy[$key].'</option>';
  			}
			}
			$table .= '</select></td></tr>';
		}

		$table .= '</table>';

    $form = new Form($form_id, '', 'post', array('class' => 'myForm'));
    $form->setEntitaRef($entita);
    $form->setValue($objednavka);
    $form->addInnerHTML($table);
/*
      $form->addLabel(MY, 'stav' );
*/
    
    if ($entita->stav == 4 or $entita->stav == 5) {
    	$form->addLabel(MY, 'stav' );
    	$form->stateSelect($entita);
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'uloz', 'Uložit');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    	
    }
    elseif (count($entita->stavy) > 0) {
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_c'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('reset', 'reset', 'Reset');
      $form->addInput('submit', 'rozpracovane', 'Zařadit do rozpracovaných');
      $form->closeTag();
    }
    else {
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addInnerHTML('Nemáte oprávnění pro modifikaci záznamu v uvedeném stavu.<br /><br />');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    }

    $form->closeFieldset();
    $this->html .= $form->get();

    $this->setView();

  }

  public function seznamrozpracovane($args)	{
  	
    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita, array('STAV' => array(4,5) ));
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
//$result = dibi::test($query);
    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'upravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena celkem',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $before_table = '<table><tr><th>Datum vytvoření: </th>
			<td> od <input type="text" id="date_od" name="DT_VYTVOREN_OD" value="'.@$_POST['DT_VYTVOREN_OD'].'" /> do <input type="text" id="date_do" name="DT_VYTVOREN_DO" value="'.@$_POST['DT_VYTVOREN_DO'].'"  />
			</td></tr></<table>';

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    ,$before_table);

		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function seznamstorno($args)	{
  	
    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita, array('STAV' => 7 ));
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
//$result = dibi::test($query);
    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'prijemupravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena celkem',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $before_table = '<table><tr><th>Datum vytvoření: </th>
			<td> od <input type="text" id="date_od" name="DT_VYTVOREN_OD" value="'.@$_POST['DT_VYTVOREN_OD'].'" /> do <input type="text" id="date_do" name="DT_VYTVOREN_DO" value="'.@$_POST['DT_VYTVOREN_DO'].'"  />
			</td></tr></<table>';

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    ,$before_table);

		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function seznamodeslani($args)	{
  	
    $entita = new $this->entita_classname();
    $table_id = 'seznamAtribut';

    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');
/*
    $query = array();
    $query[] = 'SELECT E.*, S.NAZEV AS S_NAZEV,
     (SELECT COUNT(*) FROM [HODNOTA_ATRIBUTU] WHERE ID_ATR = S.ID) AS POCET_HODNOT FROM ['.$entita->table.'] AS E';
    array_push($query,'INNER JOIN [STAV] AS S ON S.STAV_ID = E.STAV AND S.ENTITA = %s',$entita->table);
*/
    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita, array('STAV' => 6 ));
    $this->myOrder($filtr_query, $entita, array(array('name' => 'dt_vytvoren', 'ord' => 'DESC')));
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);
//$result = dibi::test($query);
    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['DT_VYTVOREN'] = Tools::dateToCZ($value['DT_VYTVOREN']);
    	$zaznamy[$key]['CENA'] = Tools::numberFromDb($value['CENA']).' Kč';  
    }
    unset($result);

    array_walk($zaznamy,
      'Tools::addLink',
      array(
        'UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'odeslatupravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
				'DETAIL' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'detail'),
          'addindex' => 'ID',
          'text'	 => ICO_NAHLED
        )
      )
    );    
    
    $hlavicka = array(
      'ID' => 'Id',
      'DT_VYTVOREN' => 'Vytvořena',
      'UZIVATEL' => 'UŽivatel',
      'CENA' => 'Cena celkem',
      'UPRAVIT' => '',
      'DETAIL' => ''
    );
     
    $obsah_css = array(
      'ID' => 'a_c',
      'S_NAZEV' => 'a_c',
    	'CENA' => 'a_r',
      'UPRAVIT' => 'a_c',
    	'DETAIL' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );
    $this->thCss($hlavicka_css);

    $before_table = '<table><tr><th>Datum vytvoření: </th>
			<td> od <input type="text" id="date_od" name="DT_VYTVOREN_OD" value="'.@$_POST['DT_VYTVOREN_OD'].'" /> do <input type="text" id="date_do" name="DT_VYTVOREN_DO" value="'.@$_POST['DT_VYTVOREN_DO'].'"  />
			</td></tr></<table>';

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'DETAIL'), $hlavicka_css, 'multisort', $entita->filtry, false
    ,$before_table);

		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();
  }

  public function odeslatupravit($args) {

  	$id = @$args[0];
    $form_id = 'OdeslaniObjednavky';
		$entita = new $this->entita_classname();

    if ($this->registry->form_send) {
    	$_POST = array_merge($entita->loadById($id),$_POST);

    	if (isset($_POST['uloz'])) {
    		$_POST['stav'] = 8;
    	}

      if (Validate::entita($entita) !== false) {

        $entita->upravit($id,$form_id);
        Tools::setMessage('Objednávka byla zařazena do odeslaných.', '', 1);
        Tools::redirect(Tools::controllerlink($this->controller_fname, 'seznamodeslani'));

      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje'.$valid_err, CSS_ERR);
      }
    }
    
    $item = $entita->getInfo($id, true);

		$this->html .= '<h1>Přijetí objednávky</h1>';
		$this->html .= '<div id="adresy"><div class="adresa">
  					<h2> Fakturační adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['FA_TITUL'].' '.$item['FA_JMENO'].' '.$item['FA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['FA_ULICE'].' '.$item['FA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['FA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['FA_PSC'].'<br />
        		<br />'.(empty($item['FA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['FA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['FA_ICO'].'<br /><b>DIČ:</b> '.$item['FA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['FA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['FA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>';
		
		$this->html .= '<div class="adresa">
  					<h2> Dodací adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['DA_TITUL'].' '.$item['DA_JMENO'].' '.$item['DA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['DA_ULICE'].' '.$item['DA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['DA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['DA_PSC'].'<br />
        		<br />'.(empty($item['DA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['DA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['DA_ICO'].'<br /><b>DIČ:</b> '.$item['DA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['DA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['DA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>
					<hr class="cleaner_left">
					</div>';
		
		$this->html .= '<table summary="Objednavkaprehled" class="seznam" cellspacing="0">
      <thead><tr>
      	<th>Id</th>
      	<th>Katalog. č.</th>
        <th>Produkt</th>
        <th>Množství</th>
        <th>Cena za kus</th>
        <th>Celková cena</th>
      </tr></thead>';
		
		$result = dibi::query('SELECT PO.MNOZSTVI_OBJ AS MNOZSTVI,
			(PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK) AS MY_CENA,
			((PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK)*PO.MNOZSTVI_OBJ) AS CENA_CELKEM,
			P.ID, P.NAZEV, P.KATALOG_CISLO, P.REWRITE_LINK
			FROM produkty_objednavka PO
			INNER JOIN PRODUKT P ON P.ID = PO.ID_PROD
			WHERE ID_OBJ = %i', $entita->id);
		
		foreach($result as $row) {
			$this->html .= '<tr>
					<td>'.$row['ID'].' </td>
					<td>'.$row['KATALOG_CISLO'].' </td>
          <td><a href="'.Tools::productLink($row['REWRITE_LINK']).'">'.$row['NAZEV'].'</a></td>
          <td class="a_c">'.$row['MNOZSTVI'].' Ks</td>
          <td class="a_r">'.number_format($row['MY_CENA'],2,',', ' ').' Kč</td>
          <td class="a_r">'.number_format($row['CENA_CELKEM'],2,',', ' ').' Kč</td>
        </tr>';
		}

		$this->html .= '</table>';

    $form = new Form($form_id, '', 'post', array('class' => 'myForm'));
    $form->setEntitaRef($entita);
    $form->setValue($item);

    if (count($entita->stavy) > 0) {
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_c'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'uloz', 'Zařadit do odeslaných');
      $form->closeTag();
    }
    else {
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addInnerHTML('<h3>Stav: '.$entita->my_stav.'</h3>');
      $form->addInnerHTML('Nemáte oprávnění pro modifikaci záznamu v uvedeném stavu.<br /><br />');
      $form->closeTag();
    }
    $form->closeFieldset();
    $this->html .= $form->get();
    
    $this->setView();

  }

  public function detail($args) {

  	$id = @$args[0];
    $form_id = 'PrijemObjednavky';
		$entita = new $this->entita_classname();

    if ($this->registry->form_send) {
    	$_POST = array_merge($entita->loadById($id),$_POST);

    	if (isset($_POST['uloz'])) {
    		$_POST['stav'] = 3;
    		$akce_text = 'potvrzena';
    	}
    	elseif (isset($_POST['storno'])) {
    		$_POST['stav'] = 7;
    		$akce_text = 'stronována';
    	}

      if (Validate::entita($entita) !== false) {

        $entita->upravit($id,$form_id);
        Tools::setMessage('Objednávka byla '.$akce_text.'.', '', 1);
        Tools::redirect(Tools::controllerlink($this->controller_fname, 'seznamnove'));


      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje'.$valid_err, CSS_ERR);
      }
    }
    
    $item = $entita->getInfo($id, true);

		$this->html .= '<h1>Objednávka id: '.$item['ID'].'<br />'.$entita->my_stav.'</h1>';
		$this->html .= '<div id="adresy"><div class="adresa">
  					<h2> Fakturační adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['FA_TITUL'].' '.$item['FA_JMENO'].' '.$item['FA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['FA_ULICE'].' '.$item['FA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['FA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['FA_PSC'].'<br />
        		<br />'.(empty($item['FA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['FA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['FA_ICO'].'<br /><b>DIČ:</b> '.$item['FA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['FA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['FA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>';

		$this->html .= '<div class="adresa">
  					<h2> Dodací adresa</h2>
  					<div class="adr_box">
        		<h3 class="a_l">'.@$item['DA_TITUL'].' '.$item['DA_JMENO'].' '.$item['DA_PRIJMENI'].'</h3>
        		<b>Ulice a č.p.:</b> '.$item['DA_ULICE'].' '.$item['DA_CISLO_POPISNE'].'<br />
        		<b>Město:</b> '.$item['DA_OBEC'].'<br />
        		<b>PSČ:</b> '.$item['DA_PSC'].'<br />
        		<br />'.(empty($item['DA_NAZEV_FIRMY'])? '' : '<b>Firma:</b> '.$item['DA_NAZEV_FIRMY'].'<br />
        		<b>IČ:</b> '.$item['DA_ICO'].'<br /><b>DIČ:</b> '.$item['DA_DIC'].'<br /><br />').'        		
        		<b>Kontaktní e-mail:</b><br />'.$item['DA_KONTAKT_MAIL'].'<br />
        		<b>Mobil:</b> '.$item['DA_KONTAKT_TELEFON'].'<br /><br />
        		</div>
					</div>
					<hr class="cleaner_left">
					</div>';
		//<th>Katalog. č.</th>
		$this->html .= '<table summary="Objednavkaprehled" class="seznam" cellspacing="0">
      <thead><tr>
      	<th class="a_c ui-corner-tl">Id</th>
        <th>Produkt</th>
        <th>Množství</th>
        <th>Bez daně</th>
        <th>Daň</th>
        <th>Cena/kus</th>
        <th class="ui-corner-tr">Celkem</th>
      </tr></thead>';
		
		$result = dibi::query('SELECT PO.MNOZSTVI_OBJ AS MNOZSTVI,
			PO.CENA AS CENA_BEZ_DPH, PO.RECYKLACNI_POPLATEK, PO.AUTORSKY_POPLATEK, ((PO.DAN -1)*100) AS DAN_PROCENT,
			(PO.CENA * (PO.DAN -1)) AS DAN_CENA,
			CEIL(PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK) AS MY_CENA,
			(CEIL(PO.CENA*PO.DAN + PO.RECYKLACNI_POPLATEK + PO.AUTORSKY_POPLATEK)*PO.MNOZSTVI_OBJ) AS CENA_CELKEM,
			P.ID, P.NAZEV, P.KATALOG_CISLO, P.REWRITE_LINK
			FROM produkty_objednavka PO
			INNER JOIN PRODUKT P ON P.ID = PO.ID_PROD
			WHERE ID_OBJ = %i', $entita->id);
		
		$celkova_cena = 0;
		$celkova_bezdane = 0;
		$celkovy_pocet = 0;
		//<td>'.$row['KATALOG_CISLO'].' </td>
		foreach($result as $row) {
			$this->html .= '<tr>
					<td class="a_c">'.$row['ID'].' </td>
          <td><a href="'.Tools::productLink($row['REWRITE_LINK']).'">'.$row['NAZEV'].'</a></td>
          <td class="a_c">'.$row['MNOZSTVI'].' Ks</td>
          <td class="a_r">'.number_format($row['CENA_BEZ_DPH'],2,',', ' ').' Kč<br />
          '.($row['RECYKLACNI_POPLATEK'] != 0 ? 'PHE : '.number_format($row['RECYKLACNI_POPLATEK'],2,',', ' ').'<br />' : '').'
          '.($row['AUTORSKY_POPLATEK'] != 0 ? 'ATP : '.number_format($row['AUTORSKY_POPLATEK'],2,',', ' ').'<br />' : '').'
          </td>
          <td class="a_r">'.number_format($row['DAN_PROCENT'],2,',', ' ').'%<br />
          '.number_format($row['DAN_CENA'],2,',', ' ').' Kč</td>
        
          <td class="a_r">'.number_format($row['MY_CENA'],2,',', ' ').' Kč</td>
          <td class="a_r">'.number_format($row['CENA_CELKEM'],2,',', ' ').' Kč</td>
        </tr>';
			$celkova_cena += $row['CENA_CELKEM'];
			$celkovy_pocet += $row['MNOZSTVI'];
			$celkova_bezdane += ($row['CENA_BEZ_DPH'] + $row['RECYKLACNI_POPLATEK'] + $row['AUTORSKY_POPLATEK']) * $row['MNOZSTVI'];
		}
		
		$this->html .= '
		<tr class="celkem">
					<td>Celkem: </td>
          <td> </td>
          <td class="a_c">'.$celkovy_pocet.' Ks</td>
          <td class="a_r">'.number_format($celkova_bezdane,2,',', ' ').' Kč</td>
          <td></td>
          <td></td>
          <td class="a_r">'.number_format($celkova_cena,2,',', ' ').' Kč</td>
        </tr>
        <tr class="celkem">
					<td>Doprava: </td>
          <td>'.$item['D_NAZEV'].'</td>
          <td></td>
          <td></td>
          <td></td>
          <td class="a_r">'.number_format($entita->cena_dop,2,',', ' ').' Kč</td>
          <td class="a_r">'.number_format($celkova_cena + $entita->cena_dop,2,',', ' ').' Kč</td>
        </tr>
        </table>';    
    $this->setView();

  }
  
}
?>