Jump to content

[Úprava] vyhledávání objednávek v BO dle produktového čísla [1.4.6.2]


Wonder.x

Recommended Posts

Zdravím,

vytvořil jsem úpravu vyhledávání objednávek dle produktového čísla. Je pro všechny ty, kterým je k ničemu vyhledávání objednávek dle ID objednávky a potřebují vyhledávat objednávky dle produktů, které obsahují.

 

Příklad použití:

 

Na sklad Vám příjde spousta zboží u některého zboží nemáte zaevidováno, ke které objednávce patří. Zadáte artiklové číslo zboží a vyjede Vám seznam všech objednávek, ve kterých disponuje hledaný produkt. Zobrazí se pole:

  • ID order - s proklikem na detail objednávky
  • Product name - Název hledaného produktu
  • Quantity - množství daného produktu v objednávce
  • Price VAT - Cena s DPH, která se dopočítává přesně dle daňové sazby uvedené u produktu + defaultně nastavená měna shopu
  • Order state - (zobrazí dle Vašeho nastaveného statusu) v jakém průběhu je momentálně objednávka
  • Date add – datum a čas přidání objednávky

Řazeno od nejnovější objednávky.

 

Ilustační náhled v příloze příspěvku.

 

Vytvořeno a funkčnost odzkoušena pouze pro verzi 1.4.6.2. Je možné, že bude fungovat i na jiných verzích ale ty jsem bohužel netestoval.

 

Je možné, že z profesionálního stylistického hlediska PHP bude mít úprava „mezery“ ale funguje.

 

Doufám, že alespoň někomu tahle úprava pomůže.

 

Postup úpravy:

Nejprve si všechny soubory řádně zálohujte a zálohujte si i překlad administrace pro jistotu root ftp/translations/cs/admin.php

 

Úprava se týká souboru AdminSearch.php umístěného na ftp /název Vaší admin složky/tabs/AdminSearch.php a souboru header.inc.php na ftp /název Vaší admin složky/header.inc.php

 

Soubor AdminSearch.php

 

Na řádek 190 hned pod kód:

/* Order */
  if ($searchType == 3)
  {
if ((int)$query AND Validate::isUnsignedInt((int)$query) AND $order = new Order((int)$query) AND Validate::isLoadedObject($order))
 Tools::redirectAdmin('index.php?tab=AdminOrders&id_order='.(int)($order->id).'&vieworder'.'&token='.Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)));
$this->_errors[] = Tools::displayError('No order found with this ID:').' '.Tools::htmlentitiesUTF8($query);
  }

Vložte kód:

/* Order by reference */
  if ($searchType == 7)
  {
	  $this->fieldsDisplay['orders'] = (array(
 'id' => array('title' => $this->l('ID order')),
 'name' => array('title' => $this->l('Product name')),
 'quantity' => array('title' => $this->l('Quantity')),
 'price_vat' => array('title' => $this->l('Price VAT')),
 'order_state' => array('title' => $this->l('Order state')),
 'date_add' => array('title' => $this->l('Date add'))
	));
  }

 

Do funce display() na řádku 225 klidně hned na začátek pod proměnné ($currentIndex, $currency, $query, $nbCategories) přidáme kód:

 /*For display orders*/
 $string = 'SELECT id_order, product_name, product_price, product_quantity, tax_rate, product_id FROM '._DB_PREFIX_.'order_detail WHERE product_reference = \''.$query.'\' ORDER BY id_order DESC';
$result = Db::getInstance()->Execute($string);

/*Display orders by product reference*/
 if (isset($this->fieldsDisplay['orders']))
 {
  echo '<h3>'.$this->l('The order list containing the search product').'</h3>
  <table class="table" cellpadding="0" cellspacing="0"><tr>';
 foreach ($this->fieldsDisplay['orders'] AS $order){
	 echo '<td align="center">'.$order['title'].'</td>';
	  }
	echo '</tr>';

  while($order = mysql_fetch_array($result)){

	$tax = '1.'.$order['tax_rate'];
	$price_vat = $order['product_price']*$tax;

	$date_string = 'SELECT date_add FROM '._DB_PREFIX_.'orders WHERE id_order = \''.$order['id_order'].'\'';
	$state_string = 'SELECT id_order_state, date_add FROM '._DB_PREFIX_.'order_history WHERE id_order = \''.$order['id_order'].'\' ORDER BY date_add DESC';
	$id_state_fetch = mysql_fetch_array(Db::getInstance()->Execute($state_string));
	$order_status_string = 'SELECT name FROM '._DB_PREFIX_.'order_state_lang WHERE id_order_state = \''.$id_state_fetch['id_order_state'].'\'';
	$date_order = mysql_fetch_array(Db::getInstance()->Execute($date_string));
	$order_state = mysql_fetch_array(Db::getInstance()->Execute($order_status_string));

	$curency = Configuration::get('PS_CURRENCY_DEFAULT');
	$curency_string = 'SELECT sign FROM '._DB_PREFIX_.'currency WHERE id_currency = \''.$curency.'\'';
	$curency_sign = mysql_fetch_array(Db::getInstance()->Execute($curency_string));
	echo '
  <tr>
  <td align="center"><a href="'.$currentIndex.'?tab=AdminOrders&id_order='.$order['id_order'].'&vieworder&token='.Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)).'">'.$order['id_order'].'</a></td>
  <td align="center">'.$order['product_name'].'</td>
  <td align="center">'.$order['product_quantity'].'</td>
  <td align="center">'.round($price_vat).' '.$curency_sign['sign'].'</td>
  <td align="center">'.$order_state["name"].'</td>
  <td align="center">'.$date_order["date_add"].'</td>
  </tr>';
	}
  echo '</table>';
 }else{
  echo '<h3>'.$this->l('Nothing found for').' "'.Tools::htmlentitiesUTF8($query).'"</h3>';
 }

 

Úplně na konci změníme kód:

 /* Display error if nothing has been matching */
 if (!$nbCategories AND !$nbProducts AND !$nbCustomers)
  echo '<h3>'.$this->l('Nothing found for').' "'.Tools::htmlentitiesUTF8($query).'"</h3>';

Na tento kód:

 /* Display error if nothing has been matching */
 if (!$nbCategories AND !$nbProducts AND !$nbCustomers AND !isset($this->fieldsDisplay['orders']))
  echo '<h3>'.$this->l('Nothing found for').' "'.Tools::htmlentitiesUTF8($query).'"</h3>';

 

Soubor header.inc.php

 

Na řádku 84-92 je kód rozevíracího seznamu, kam přidáme pod "value="3" " kód:

<option value="7" '.(Tools::getValue('bo_search_type') == 7 ? 'selected="selected"' : '').'>'.translate('orders by ref').'</option>

 

 

Teď už jen přeložit v překladu BO a hotovo.

Enjoy :-)

post-170633-0-52171500-1355918429_thumb.jpg

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...