Goplyak Posted February 28, 2013 Report Share Posted February 28, 2013 Здравствуйте, требуется реализовать экспорт заказов в админке пробовал сделать на примере выгрузки пользователей, сама функция идет, но дальше файл не выгружается, может кто-то подталкнет где копать? А лучше всего подскажет какие переменные отвечают за строки в екселеВот так на выходе хотелось бы видеть ексельный файл http://sendfile.su/769939 Quote Link to post Share on other sites
Solution Goplyak Posted February 28, 2013 Author Solution Report Share Posted February 28, 2013 наверно из-за моей жадности или недостатка лишних средств, у меня получилось сделать, только вот не вышло общее количество товаров из заказа, поэтому решил отказаться от этого пункта, может кому понадобиться:Создаем файл export_orders.php с содержанием: <?php chdir('../..'); require_once('api/Simpla.php'); class ExportAjax extends Simpla { private $columns_names = array( 'id'=> 'Заказ N', 'name'=> 'Имя пользователя', 'phone'=> 'Номер телефона', 'address'=> 'Адрес клиента', 'email'=> 'Почта клиента', 'comment'=> 'Комментарий клиента', 'discount'=> 'Скидка на заказ(если есть)', 'total_price'=> 'Общая сумма заказа', 'date'=> 'Дата заказа' ); private $column_delimiter = ';'; private $orders_count = 5; private $export_files_dir = 'simpla/files/export_orders/'; private $filename = 'orders.csv'; public function fetch() { // Эксель кушает только 1251 setlocale(LC_ALL, 'ru_RU.1251'); $this->db->query('SET NAMES cp1251'); // Страница, которую экспортируем $page = $this->request->get('page'); if(empty($page) || $page==1) { $page = 1; // Если начали сначала - удалим старый файл экспорта if(is_writable($this->export_files_dir.$this->filename)) unlink($this->export_files_dir.$this->filename); } // Открываем файл экспорта на добавление $f = fopen($this->export_files_dir.$this->filename, 'ab'); // Если начали сначала - добавим в первую строку названия колонок if($page == 1) { fputcsv($f, $this->columns_names, $this->column_delimiter); } $filter = array(); $filter['page'] = $page; $filter['limit'] = $this->orders_count; // Выбираем заказы $orders = array(); foreach($this->orders->get_orders($filter) as $u) { $str = array(); foreach($this->columns_names as $n=>$c) $str[] = $u->$n; fputcsv($f, $str, $this->column_delimiter); } $total_orders = $this->orders->count_orders(); if($this->orders_count*$page < $total_orders) return array('end'=>false, 'page'=>$page, 'totalpages'=>$total_orders/$this->orders_count); else return array('end'=>true, 'page'=>$page, 'totalpages'=>$total_orders/$this->orders_count); fclose($f); } } $export_ajax = new ExportAjax(); $json = json_encode($export_ajax->fetch()); header("Content-type: application/json; charset=utf-8"); header("Cache-Control: must-revalidate"); header("Pragma: no-cache"); header("Expires: -1"); print $json;и кидаем его в вашсайт/simpla/ajax/2) создаем файл export_orders.tpl с содержанием: {capture name=tabs} {/capture} {$meta_title='Экспорт заказов' scope=parent} <script> {literal} var in_process=false; $(function() { // On document load $('input#start').click(function() { $("#progressbar").progressbar({ value: 0 }); $("#start").hide('fast'); do_export(); }); function do_export(page) { page = typeof(page) != 'undefined' ? page : 1; $.ajax({ url: "ajax/export_orders.php", data: {page:page}, dataType: 'json', success: function(data){ if(data && !data.end) { $("#progressbar").progressbar({ value: 100*data.page/data.totalpages }); do_export(data.page*1+1); } else { $("#progressbar").hide('fast'); window.location.href = 'files/export_orders/orders.csv'; } }, error:function(xhr, status, errorThrown) { alert(errorThrown+'\n'+xhr.responseText); } }); } }); {/literal} </script> <style> .ui-progressbar-value { background-image: url(design/images/progress.gif); background-position:left; border-color: #009ae2;} #progressbar{ clear: both; height:29px; } #result{ clear: both; width:100%;} #download{ display:none; clear: both; } </style> {if $message_error} <!-- Системное сообщение --> <div class="message message_error"> <span> {if $message_error == 'no_permission'}Установите права на запись в папку {$export_files_dir} {else}{$message_error}{/if} </span> </div> <!-- Системное сообщение (The End)--> {/if} <div> <h1>Экспорт заказов</h1> {if $message_error != 'no_permission'} <div id='progressbar'></div> <input class="button_green" id="start" type="button" name="" value="Экспорт заказов" /> {/if} </div>и ложем его в вашсайт/simpla/design/html/3) создаем файл ExportOrdersAdmin.php с содержанием: <?PHP require_once('api/Simpla.php'); class ExportOrdersAdmin extends Simpla { private $export_files_dir = 'simpla/files/export_orders/'; public function fetch() { $this->design->assign('export_files_dir', $this->export_files_dir); if(!is_writable($this->export_files_dir)) $this->design->assign('message_error', 'no_permission'); return $this->design->fetch('export_orders.tpl'); } }и ложем в вашсайт/simpla/4) Далее создаем папку в /simpla/files/ под названием export_orders и туда ложем файл orders.csvС наименованиями столбцов в порядке( Заказ N, Имя пользователя, Номер телефона, Адрес клиента, Почта клиента, Комментарий клиента, Скидка на заказ(если есть), Общая сумма заказа, Дата заказа )5) выводим в админке, для этого в файле /simpla/design/html/orders.tpl в удобном для вас месте вставляем {if $orders_count>0} <form method="post" action="{url module=ExportOrdersAdmin}" target="_blank"> <input type="hidden" name="session_id" value="{$smarty.session.id}"> <input type="image" src="./design/images/export_excel.png" name="export" title="Экспортировать заказы"> </form> {/if} Думаю кому-то пригодиться. Вот все файлы загрузил которые добавить надо http://yadi.sk/d/DQds6BXR2yWYE использовал. Quote Link to post Share on other sites
Goplyak Posted April 4, 2013 Author Report Share Posted April 4, 2013 ребята перестал работать импорт мой в новой версии, пиши доступ запрещен, не подскажите в каком файле подправить? Quote Link to post Share on other sites
Danya Posted September 15, 2013 Report Share Posted September 15, 2013 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'export_orders', Quote Link to post Share on other sites
Danya Posted November 16, 2013 Report Share Posted November 16, 2013 Ребята, кто-то делал себе выгрузку заказов по определённым статусам? К примеру все "ПРИНЯТЫЕ" И экспорт пользователей по группам Quote Link to post Share on other sites
Kasha Posted November 16, 2013 Report Share Posted November 16, 2013 По статусам выгрузку просто добавляем поле статус, и фильтр статус и будет счастье Quote Link to post Share on other sites
shop.miragro Posted March 29, 2014 Report Share Posted March 29, 2014 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'export_orders', Добрый день! Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".Версия Simpla 2.2.4 Quote Link to post Share on other sites
Danya Posted April 4, 2014 Report Share Posted April 4, 2014 киньте в личку ftp, посмотрим! Quote Link to post Share on other sites
toxmost Posted April 6, 2014 Report Share Posted April 6, 2014 Добрый день! Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".Версия Simpla 2.2.4Господа, как с этим бороться все таки??? Quote Link to post Share on other sites
Kosjak76 Posted April 6, 2014 Report Share Posted April 6, 2014 Надо добавить в файл ИндексАдмин.пхп разрешения для этого модуля, я думаю, что-бы не городить огород - ордерс.Смотрите, как там сделано, и делайте аналогично, только для своего модуля.Примерно так: 'ExportAjax' => 'orders', Quote Link to post Share on other sites
damapic Posted September 4, 2014 Report Share Posted September 4, 2014 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'orders', Quote Link to post Share on other sites
shuba32 Posted September 23, 2014 Report Share Posted September 23, 2014 Ребята, кто-то делал себе выгрузку заказов по определённым статусам?К примеру все "ПРИНЯТЫЕ"И экспорт пользователей по группама кто нибудь может поточнее сказать как применить фильтр в экспорте с примером (я начинающий) Quote Link to post Share on other sites
Sharfik Posted August 17, 2015 Report Share Posted August 17, 2015 очень дельная идея! спасибо за реализацию! А что нужно добавить что бы было еще и содержимое заказа (название продукта + вариант, кол-во, стоимость за единицу, доставка, статус, оплата)? Quote Link to post Share on other sites
Joe Posted October 14, 2015 Report Share Posted October 14, 2015 (edited) а в .xls этот экспорт может? Хотя тут импорт всех заказов. А нужно каждый отдельно( Edited October 14, 2015 by Joe Quote Link to post Share on other sites
Gloobus Posted October 14, 2015 Report Share Posted October 14, 2015 А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет Делал как то как раз выгрузку в xls перечня заказов, которые "приняты" и при этом не оплачены.Там что-то со складом постоянно не сходилось, вот просили сделать сверять. В экселевский файл экспорта попадает номер и дата заказа, сам товар и его кол-во в этом заказе. В принципе в эксель можно выгрузить что угодно, была бы фантазия Я помню даже кому то делал формирование в экселе что-то типа бирок заказов для почты, печатаешь, вырезаешь и клеишь готовую на посылку, а там уже индекс, адрес и кому отправлять, сумма наложного платежа прописью. В эксель даже можно выгружать данные и тут же по ним строить графики, смотреть статистику. Quote Link to post Share on other sites
Noxter Posted October 14, 2015 Report Share Posted October 14, 2015 А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет Все верно, я полностью согласен. Реализовать экспорт через CSV не составит труда. Quote Link to post Share on other sites
DressCode Posted November 7, 2015 Report Share Posted November 7, 2015 А чем CSV не устраивает? Наверное автор собирался добавлять еще форматирование. Quote Link to post Share on other sites
makim925 Posted March 12, 2017 Report Share Posted March 12, 2017 (edited) сначала была "Permission denied" внес 'ExportOrdersAdmin' => 'orders', Edited March 12, 2017 by makim925 Quote Link to post Share on other sites
mukszwei Posted November 17, 2017 Report Share Posted November 17, 2017 Спасибо за реализацию всё работает.Подскажите как добавить в таблицу заказанный товар и его категорию? Quote Link to post Share on other sites
Dmitry86 Posted December 29, 2017 Report Share Posted December 29, 2017 Народ, подскажите, пожалуйста, как убирать перенос на новую строку \r\n из адреса, комментария к заказу и примечания при экспорте? Заменить просто на пробел. Спасибо! Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.