OpenCart. Выгрузка заказов в Excel. Часть 3

OpenCart. Выгрузка заказов в Excel

От автора: приветствую вас, друзья. Итак, мы продолжаем цикл статей, посвященных знакомству с одной из популярнейших CMS для создания интернет-магазинов – OpenCart (Оперкарт). В этой и нескольких следующих статьях мы будем работать непосредственно с кодом CMS и реализуем выгрузку товаров из заказов за выбранный период в Excel. В этой статье мы занимаемся написанием обработчика, формирующего выгрузку в Excel.

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

public function wfm_export(){
 if(isset($_GET['wfm_start_date'], $_GET['wfm_end_date'])){
 $wfm_start_date = trim($_GET['wfm_start_date']);
 $wfm_end_date = trim($_GET['wfm_end_date']);

 if( empty($wfm_start_date) || empty($wfm_end_date)){
 die('Error! Field required');
 }

 $file = DIR_SYSTEM . '../wfm_export_orders/file.xlsx';
 require_once DIR_SYSTEM . '../wfm_export_orders/phpexcel/Classes/PHPExcel.php';

 $this->load->model('sale/order');
 $results = $this->model_sale_order->getOrdersForExport($wfm_start_date, $wfm_end_date);
 if($results){
 $objCreate = new PHPExcel;
 $page = $objCreate->setActiveSheetIndex(0);

 $i = 2;
 $style_header = [
 'font' => [
 'bold' => true,
 'size' => 12,
 ],
 'alignment' => [
 'horizontal' => PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
 'vertical' => PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
 ],
 'fill' => [
 'type' => PHPExcel_STYLE_FILL::FILL_SOLID,
 'color'=> [
 'rgb' => 'CFCFCF'
 ]
 ]
 ];

 $page->setCellValue("A1", '№ заказа');
 $page->setCellValue("B1", 'Товар');
 $page->setCellValue("C1", 'Цена');
 $page->setCellValue("D1", 'Кол-во');
 $page->setCellValue("E1", 'Итого');
 $page->setCellValue("F1", 'Дата заказа');
 $page->getStyle('A1:F1')->applyFromArray($style_header);


 foreach($results as $item){
 $page->setCellValue("A{$i}", $item['order_id']);
 $page->setCellValue("B{$i}", $item['name']);
 $page->setCellValue("C{$i}", $item['price']);
 $page->setCellValue("D{$i}", $item['quantity']);
 $page->setCellValue("E{$i}", $item['total']);
 $page->setCellValue("F{$i}", $item['date_added']);
 $i++;
 }

 $page->getColumnDimension('A')->setAutoSize(true);
 $page->getColumnDimension('B')->setAutoSize(true);
 $page->getColumnDimension('C')->setAutoSize(true);
 $page->getColumnDimension('D')->setAutoSize(true);
 $page->getColumnDimension('E')->setAutoSize(true);
 $page->getColumnDimension('F')->setAutoSize(true);

 $objWriter = PHPExcel_IOFactory::createWriter($objCreate, 'Excel2007');
 $objWriter->save($file);
 echo "<p>Файл создан! <a href='/wfm_export_orders/file.xlsx' class='text-danger'>Скачать</a></p>";
 }else{
 echo 'Заказы за указанный период не найдены...';
 }
 die;
 }
}

Здесь мы подключаем библиотеку PHPExcel, вызываем из модели метод getOrdersForExport, которую добавим ниже, и формируем файл Excel. Напоминаю, по работе с библиотекой PHPExcel вы можете посмотреть этот урок.

Теперь давайте создадим метод getOrdersForExport в модели ModelSaleOrder, которая находится в файле admin\model\sale\order.php.

public function getOrdersForExport($wfm_start_date, $wfm_end_date){
 $sql = "SELECT o.order_id, o.date_added, op.name, op.quantity, op.price, op.total 
 FROM `" . DB_PREFIX . "order` o 
 LEFT JOIN `" . DB_PREFIX . "order_product` op 
 ON o.order_id = op.order_id
 WHERE DATE(o.date_added) BETWEEN DATE('" . $this->db->escape($wfm_start_date) . "') AND DATE('" . $this->db->escape($wfm_end_date) . "')
 ORDER BY DATE(o.date_added)";

 $query = $this->db->query($sql);
 return $query->rows;
}

Осталось протестировать код. Если мы нигде не ошиблись, тогда в результате работы написанного кода мы получим для скачивания файл Excel с выгрузкой проданных товаров.

Интернет-магазин на OpenCart!

Создайте интернет-магазин на самой популярной CMS – OpenCart с нуля!

Приступить к созданию

Собственно, наш скрипт, в целом, — готов. Остается лишь причесать код и оформить его в виде модуля при желании. Ну а мы на этом остановимся. Больше об OpenCart вы можете узнать из наших бесплатных или платных уроков.

Интернет-магазин на OpenCart

Создание магазина с уникальным шаблоном на CMS OpenCart

Научиться

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree