Wonder.x Posted December 19, 2012 Share Posted December 19, 2012 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 :-) 1 Link to comment Share on other sites More sharing options...
djmila Posted December 26, 2012 Share Posted December 26, 2012 jinak toto jiz presta mela ... statistika / informace o produktu / lze nastavit datum od kdy do kdy / a prislusny produkt / Link to comment Share on other sites More sharing options...
Wonder.x Posted December 27, 2012 Author Share Posted December 27, 2012 Ano. Sice se v tomhle případě musí někdo rýpat v kódu ale příjde mi to rychlejší a elegantnější. Každý ať posoudí sám. Link to comment Share on other sites More sharing options...
sJakub Posted January 20, 2013 Share Posted January 20, 2013 super! odzkouseno na 1.4.7 a 1.4.6.2 Link to comment Share on other sites More sharing options...
[email protected] Posted June 13, 2013 Share Posted June 13, 2013 Skvělá práce. Odzkoušeno na 1.4.10, funguje bez problémů. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now