Перейти к содержанию
Официальный форум поддержки Simpla

Экспорт заказов


Перейти к решению Решено Goplyak,

Рекомендуемые сообщения

Здравствуйте, требуется реализовать экспорт заказов в админке

пробовал сделать на примере выгрузки пользователей, сама функция идет, но дальше файл не выгружается, может кто-то подталкнет где копать? А лучше всего подскажет какие переменные отвечают за строки в екселе

Вот так на выходе хотелось бы видеть ексельный файл http://sendfile.su/769939

Ссылка на сообщение
Поделиться на другие сайты
  • Решение

наверно из-за моей жадности или недостатка лишних средств, у меня получилось сделать, только вот не вышло общее количество товаров из заказа, поэтому решил отказаться от этого пункта, может кому понадобиться:

Создаем файл 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 использовал.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

ребята перестал работать импорт мой в новой версии, пиши доступ запрещен, не подскажите в каком файле подправить?

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...
  • 2 месяца спустя...

Ребята, кто-то делал себе выгрузку заказов по определённым статусам?


К примеру все "ПРИНЯТЫЕ"



И экспорт пользователей по группам



Ссылка на сообщение
Поделиться на другие сайты

По статусам выгрузку просто добавляем поле статус, и фильтр статус и будет счастье ;)

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

 

в файле simpla/IndexAdmin.php нужно добавить:

'ExportOrdersAdmin'    => 'export_orders',

 

Добрый день!

 

Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".

Версия Simpla 2.2.4

Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

Подскажите, пожалуйста, как починить этот модуль? Все добавил, но не работает, пишет "Permission denied".

Версия Simpla 2.2.4

Господа, как с этим бороться все таки???

Ссылка на сообщение
Поделиться на другие сайты

Надо добавить в файл ИндексАдмин.пхп разрешения для этого модуля, я думаю, что-бы не городить огород - ордерс.

Смотрите, как там сделано, и делайте аналогично, только для своего модуля.

Примерно так:

        'ExportAjax'         => 'orders',

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...
  • 3 недели спустя...

 

Ребята, кто-то делал себе выгрузку заказов по определённым статусам?

К примеру все "ПРИНЯТЫЕ"

И экспорт пользователей по группам

а кто нибудь может поточнее сказать как применить фильтр в экспорте с примером (я начинающий)

Ссылка на сообщение
Поделиться на другие сайты
  • 10 месяцев спустя...

очень дельная идея! спасибо за реализацию!

 

А что нужно добавить что бы было еще и содержимое заказа (название продукта + вариант, кол-во, стоимость за единицу, доставка, статус, оплата)?

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

а в .xls этот экспорт может? Хотя тут импорт всех заказов. А нужно каждый отдельно(

Изменено пользователем Joe
Ссылка на сообщение
Поделиться на другие сайты

А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет :)

 

Делал как то как раз выгрузку в xls перечня заказов, которые "приняты" и при этом не оплачены.

Там что-то со складом постоянно не сходилось, вот просили сделать сверять. В экселевский файл экспорта попадает номер и дата заказа, сам товар и его кол-во в этом заказе.

 

В принципе в эксель можно выгрузить что угодно, была бы фантазия :) Я помню даже кому то делал формирование в экселе что-то типа бирок заказов для почты, печатаешь, вырезаешь и клеишь готовую на посылку, а там уже индекс, адрес и кому отправлять, сумма наложного платежа прописью.

 

В эксель даже можно выгружать данные и тут же по ним строить графики, смотреть статистику.

Ссылка на сообщение
Поделиться на другие сайты

А чем CSV не устраивает? Я считаю что заморачиваться с экселем стоит только тогда, когда ппц как необходимо сложное форматирование или стили документа с последующими правками. В остальных случаях достаточно csv, ну или pdf, а в некоторых случая и голый html пойдет :)

Все верно, я полностью согласен.

Реализовать экспорт через CSV не составит труда.

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...
  • 1 год спустя...
  • 8 месяцев спустя...
  • 1 месяц спустя...

Народ, подскажите, пожалуйста, как убирать перенос на новую строку \r\n из адреса, комментария к заказу и примечания при экспорте? Заменить просто на пробел. Спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...