Goplyak Опубликовано 28 февраля, 2013 Жалоба Поделиться Опубликовано 28 февраля, 2013 Здравствуйте, требуется реализовать экспорт заказов в админке пробовал сделать на примере выгрузки пользователей, сама функция идет, но дальше файл не выгружается, может кто-то подталкнет где копать? А лучше всего подскажет какие переменные отвечают за строки в екселеВот так на выходе хотелось бы видеть ексельный файл http://sendfile.su/769939 Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Goplyak Опубликовано 28 февраля, 2013 Автор Решение Жалоба Поделиться Опубликовано 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 использовал. Цитата Ссылка на сообщение Поделиться на другие сайты
Goplyak Опубликовано 4 апреля, 2013 Автор Жалоба Поделиться Опубликовано 4 апреля, 2013 ребята перестал работать импорт мой в новой версии, пиши доступ запрещен, не подскажите в каком файле подправить? Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 15 сентября, 2013 Жалоба Поделиться Опубликовано 15 сентября, 2013 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'export_orders', Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 Ребята, кто-то делал себе выгрузку заказов по определённым статусам? К примеру все "ПРИНЯТЫЕ" И экспорт пользователей по группам Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 По статусам выгрузку просто добавляем поле статус, и фильтр статус и будет счастье Цитата Ссылка на сообщение Поделиться на другие сайты
shop.miragro Опубликовано 29 марта, 2014 Жалоба Поделиться Опубликовано 29 марта, 2014 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'export_orders', Добрый день! Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".Версия Simpla 2.2.4 Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 4 апреля, 2014 Жалоба Поделиться Опубликовано 4 апреля, 2014 киньте в личку ftp, посмотрим! Цитата Ссылка на сообщение Поделиться на другие сайты
toxmost Опубликовано 6 апреля, 2014 Жалоба Поделиться Опубликовано 6 апреля, 2014 Добрый день! Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".Версия Simpla 2.2.4Господа, как с этим бороться все таки??? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 6 апреля, 2014 Жалоба Поделиться Опубликовано 6 апреля, 2014 Надо добавить в файл ИндексАдмин.пхп разрешения для этого модуля, я думаю, что-бы не городить огород - ордерс.Смотрите, как там сделано, и делайте аналогично, только для своего модуля.Примерно так: 'ExportAjax' => 'orders', Цитата Ссылка на сообщение Поделиться на другие сайты
damapic Опубликовано 4 сентября, 2014 Жалоба Поделиться Опубликовано 4 сентября, 2014 в файле simpla/IndexAdmin.php нужно добавить: 'ExportOrdersAdmin' => 'orders', Цитата Ссылка на сообщение Поделиться на другие сайты
shuba32 Опубликовано 23 сентября, 2014 Жалоба Поделиться Опубликовано 23 сентября, 2014 Ребята, кто-то делал себе выгрузку заказов по определённым статусам?К примеру все "ПРИНЯТЫЕ"И экспорт пользователей по группама кто нибудь может поточнее сказать как применить фильтр в экспорте с примером (я начинающий) Цитата Ссылка на сообщение Поделиться на другие сайты
Sharfik Опубликовано 17 августа, 2015 Жалоба Поделиться Опубликовано 17 августа, 2015 очень дельная идея! спасибо за реализацию! А что нужно добавить что бы было еще и содержимое заказа (название продукта + вариант, кол-во, стоимость за единицу, доставка, статус, оплата)? Цитата Ссылка на сообщение Поделиться на другие сайты
Joe Опубликовано 14 октября, 2015 Жалоба Поделиться Опубликовано 14 октября, 2015 (изменено) а в .xls этот экспорт может? Хотя тут импорт всех заказов. А нужно каждый отдельно( Изменено 14 октября, 2015 пользователем Joe Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 14 октября, 2015 Жалоба Поделиться Опубликовано 14 октября, 2015 А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет Делал как то как раз выгрузку в xls перечня заказов, которые "приняты" и при этом не оплачены.Там что-то со складом постоянно не сходилось, вот просили сделать сверять. В экселевский файл экспорта попадает номер и дата заказа, сам товар и его кол-во в этом заказе. В принципе в эксель можно выгрузить что угодно, была бы фантазия Я помню даже кому то делал формирование в экселе что-то типа бирок заказов для почты, печатаешь, вырезаешь и клеишь готовую на посылку, а там уже индекс, адрес и кому отправлять, сумма наложного платежа прописью. В эксель даже можно выгружать данные и тут же по ним строить графики, смотреть статистику. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 14 октября, 2015 Жалоба Поделиться Опубликовано 14 октября, 2015 А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет Все верно, я полностью согласен. Реализовать экспорт через CSV не составит труда. Цитата Ссылка на сообщение Поделиться на другие сайты
DressCode Опубликовано 7 ноября, 2015 Жалоба Поделиться Опубликовано 7 ноября, 2015 А чем CSV не устраивает? Наверное автор собирался добавлять еще форматирование. Цитата Ссылка на сообщение Поделиться на другие сайты
makim925 Опубликовано 12 марта, 2017 Жалоба Поделиться Опубликовано 12 марта, 2017 (изменено) сначала была "Permission denied" внес 'ExportOrdersAdmin' => 'orders', Изменено 12 марта, 2017 пользователем makim925 Цитата Ссылка на сообщение Поделиться на другие сайты
mukszwei Опубликовано 17 ноября, 2017 Жалоба Поделиться Опубликовано 17 ноября, 2017 Спасибо за реализацию всё работает.Подскажите как добавить в таблицу заказанный товар и его категорию? Цитата Ссылка на сообщение Поделиться на другие сайты
Dmitry86 Опубликовано 29 декабря, 2017 Жалоба Поделиться Опубликовано 29 декабря, 2017 Народ, подскажите, пожалуйста, как убирать перенос на новую строку \r\n из адреса, комментария к заказу и примечания при экспорте? Заменить просто на пробел. Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.