I am looking to do a total export of sales history from M2, so i can save to excel (as a backup reference).
From what i see, the admin exports do not include product info, with the customer info.
Can i export a file/s from the dBase directly that would have this info?
You can try the below solution:
1. Please create a di.xml file at app/code/VendorName/ModuleName/etc and use the below code:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> <preference for="Magento\Sales\Block\Order\History" type="VendoerName\ModuleName\Block\Order\History" /> </config>
2. You can use the below code in the History.php file located at app/code/VendorName/ModuleName/Block/Order
<?php namespace VendoerName\ModuleName\Block\Order; use \Magento\Framework\App\ObjectManager; use \Magento\Sales\Model\ResourceModel\Order\CollectionFactoryInterface; class History extends \Magento\Framework\View\Element\Template { protected $_template = 'VendoerName_ModuleName::order/history.phtml'; /** * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory */ protected $_orderCollectionFactory; /** * @var \Magento\Customer\Model\Session */ protected $_customerSession; /** * @var \Magento\Sales\Model\Order\Config */ protected $_orderConfig; /** * @var \Magento\Sales\Model\ResourceModel\Order\Collection */ protected $orders; /** * @var CollectionFactoryInterface */ private $orderCollectionFactory; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory * @param \Magento\Customer\Model\Session $customerSession * @param \Magento\Sales\Model\Order\Config $orderConfig * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory, \Magento\Customer\Model\Session $customerSession, \Magento\Sales\Model\Order\Config $orderConfig, array $data = [] ) { $this->_orderCollectionFactory = $orderCollectionFactory; $this->_customerSession = $customerSession; $this->_orderConfig = $orderConfig; parent::__construct($context, $data); } protected function _construct() { parent::_construct(); $this->pageConfig->getTitle()->set(__('My Orders')); } /** * Provide order collection factory * * @return CollectionFactoryInterface * @deprecated 100.1.1 */ private function getOrderCollectionFactory() { if ($this->orderCollectionFactory === null) { $this->orderCollectionFactory = ObjectManager::getInstance()->get(CollectionFactoryInterface::class); } return $this->orderCollectionFactory; } public function getAllOrder() { return $this->orderCollectionFactory->create(); } /** * Get customer orders * * @return bool|\Magento\Sales\Model\ResourceModel\Order\Collection */ public function getOrders() { if (!($customerId = $this->_customerSession->getCustomerId())) { return false; } if (!$this->orders) { $this->orders = $this->getOrderCollectionFactory()->create($customerId)->addFieldToSelect( '*' )->addFieldToFilter( 'status', ['in' => $this->_orderConfig->getVisibleOnFrontStatuses()] )->setOrder( 'created_at', 'desc' ); } return $this->orders; } /** * @inheritDoc */ protected function _prepareLayout() { parent::_prepareLayout(); if ($this->getOrders()) { $pager = $this->getLayout()->createBlock( \Magento\Theme\Block\Html\Pager::class, 'sales.order.history.pager' )->setCollection( $this->getOrders() ); $this->setChild('pager', $pager); $this->getOrders()->load(); } return $this; } /** * Get Pager child block output * * @return string */ public function getPagerHtml() { return $this->getChildHtml('pager'); } public function getViewUrl($order) { return $this->getUrl('sales/order/view', ['order_id' => $order->getId()]); } /** * Get order track URL * * @param object $order * @return string * @deprecated 102.0.3 Action does not exist * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getTrackUrl($order) { trigger_error('Method is deprecated', E_USER_DEPRECATED); return ''; } public function getReorderUrl($order) { return $this->getUrl('sales/order/reorder', ['order_id' => $order->getId()]); } /** * Get customer account URL * * @return string */ public function getBackUrl() { return $this->getUrl('customer/account/'); } public function getEmptyOrdersMessage() { return __('No order has been placed.'); } }
3. In the app/code/VendorName/Modulename/AutoRelatedProducts/view/frontend/templates/order history.phtml, please use the below code:
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ // phpcs:disable Magento2.Templates.ThisInTemplate // @codingStandardsIgnoreFile /** @var \Magento\Sales\Block\Order\History $block */ ?> <?php $_orders = $block->getAllOrder(); ?> <?= $block->getChildHtml('info') ?> <?php if ($_orders && count($_orders)) : ?> <div class="table-wrapper orders-history"> <table class="data table table-order-items history" id="my-orders-table"> <caption class="table-caption"><?= $block->escapeHtml(__('Orders')) ?></caption> <thead> <tr> <th scope="col" class="col id"><?= $block->escapeHtml(__('Order #')) ?></th> <th scope="col" class="col date"><?= $block->escapeHtml(__('Date')) ?></th> <?= $block->getChildHtml('extra.column.header') ?> <th scope="col" class="col total"><?= $block->escapeHtml(__('Order Total')) ?></th> <th scope="col" class="col status"><?= $block->escapeHtml(__('Status')) ?></th> <th scope="col" class="col actions"><?= $block->escapeHtml(__('Action')) ?></th> </tr> </thead> <tbody> <?php foreach ($_orders as $_order) : ?> <tr> <td data-th="<?= $block->escapeHtml(__('Order #')) ?>" class="col id"><?= $block->escapeHtml($_order->getRealOrderId()) ?></td> <td data-th="<?= $block->escapeHtml(__('Date')) ?>" class="col date"><?= /* @noEscape */ $block->formatDate($_order->getCreatedAt()) ?></td> <?php $extra = $block->getChildBlock('extra.container'); ?> <?php if ($extra) : ?> <?php $extra->setOrder($_order); ?> <?= $extra->getChildHtml() ?> <?php endif; ?> <td data-th="<?= $block->escapeHtml(__('Order Total')) ?>" class="col total"><?= /* @noEscape */ $_order->formatPrice($_order->getGrandTotal()) ?></td> <td data-th="<?= $block->escapeHtml(__('Status')) ?>" class="col status"><?= $block->escapeHtml($_order->getStatusLabel()) ?></td> <td data-th="<?= $block->escapeHtml(__('Actions')) ?>" class="col actions"> <a href="<?= $block->escapeUrl($block->getViewUrl($_order)) ?>" class="action view"> <span><?= $block->escapeHtml(__('View Order')) ?></span> </a> <?php if ($this->helper(\Magento\Sales\Helper\Reorder::class)->canReorder($_order->getEntityId())) : ?> <a href="#" data-post='<?= /* @noEscape */ $this->helper(\Magento\Framework\Data\Helper\PostHelper::class) ->getPostData($block->getReorderUrl($_order)) ?>' class="action order"> <span><?= $block->escapeHtml(__('Reorder')) ?></span> </a> <?php endif ?> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php else : ?> <div class="message info empty"><span><?= $block->escapeHtml($block->getEmptyOrdersMessage()) ?></span></div> <?php endif ?>
4. Update History.php getAllOrder() function
public function getAllOrder() { $cutId = $this->_customerSession->getCustomerId(); $orderColl = []; if ($cutId) { $orderColl = $this->orderCollectionFactory->create(); $orderColl->addAttributeToFilter('customer_id',$cutId); } return $orderColl; }