| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Adminhtml/controllers/Sales/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Adminhtml sales orders controller
*
* @category Mage
* @package Mage_Adminhtml
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Controller_Action
{
/**
* Array of actions which can be processed without secret key validation
*
* @var array
*/
protected $_publicActions = array('view', 'index');
/**
* Additional initialization
*
*/
protected function _construct()
{
$this->setUsedModuleName('Mage_Sales');
}
/**
* Init layout, menu and breadcrumb
*
* @return Mage_Adminhtml_Sales_OrderController
*/
protected function _initAction()
{
$this->loadLayout()
->_setActiveMenu('sales/order')
->_addBreadcrumb($this->__('Sales'), $this->__('Sales'))
->_addBreadcrumb($this->__('Orders'), $this->__('Orders'));
return $this;
}
/**
* Initialize order model instance
*
* @return Mage_Sales_Model_Order || false
*/
protected function _initOrder()
{
$id = $this->getRequest()->getParam('order_id');
$order = Mage::getModel('sales/order')->load($id);
if (!$order->getId()) {
$this->_getSession()->addError($this->__('This order no longer exists.'));
$this->_redirect('*/*/');
$this->setFlag('', self::FLAG_NO_DISPATCH, true);
return false;
}
Mage::register('sales_order', $order);
Mage::register('current_order', $order);
return $order;
}
/**
* Orders grid
*/
public function indexAction()
{
$this->_title($this->__('Sales'))->_title($this->__('Orders'));
$this->_initAction()
->renderLayout();
}
/**
* Order grid
*/
public function gridAction()
{
$this->loadLayout(false);
$this->renderLayout();
}
/**
* View order detale
*/
public function viewAction()
{
$this->_title($this->__('Sales'))->_title($this->__('Orders'));
if ($order = $this->_initOrder()) {
$this->_initAction();
$this->_title(sprintf("#%s", $order->getRealOrderId()));
$this->renderLayout();
}
}
/**
* Notify user
*/
public function emailAction()
{
if ($order = $this->_initOrder()) {
try {
$order->sendNewOrderEmail();
$this->_getSession()->addSuccess($this->__('The order email has been sent.'));
} catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
} catch (Exception $e) {
$this->_getSession()->addError($this->__('Failed to send the order email.'));
Mage::logException($e);
}
}
$this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
}
/**
* Cancel order
*/
public function cancelAction()
{
if ($order = $this->_initOrder()) {
try {
$order->cancel()
->save();
$this->_getSession()->addSuccess(
$this->__('The order has been cancelled.')
);
}
catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
}
catch (Exception $e) {
$this->_getSession()->addError($this->__('The order has not been cancelled.'));
Mage::logException($e);
}
$this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
}
}
/**
* Hold order
*/
public function holdAction()
{
if ($order = $this->_initOrder()) {
try {
$order->hold()
->save();
$this->_getSession()->addSuccess(
$this->__('The order has been put on hold.')
);
}
catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
}
catch (Exception $e) {
$this->_getSession()->addError($this->__('The order was not put on hold.'));
}
$this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
}
}
/**
* Unhold order
*/
public function unholdAction()
{
if ($order = $this->_initOrder()) {
try {
$order->unhold()
->save();
$this->_getSession()->addSuccess(
$this->__('The order has been released from holding status.')
);
}
catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
}
catch (Exception $e) {
$this->_getSession()->addError($this->__('The order was not unheld.'));
}
$this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
}
}
/**
* Manage payment state
*
* Either denies or approves a payment that is in "review" state
*/
public function reviewPaymentAction()
{
try {
if (!$order = $this->_initOrder()) {
return;
}
$action = $this->getRequest()->getParam('action', '');
switch ($action) {
case 'accept':
$order->getPayment()->accept();
$message = $this->__('The payment has been accepted.');
break;
case 'deny':
$order->getPayment()->deny();
$message = $this->__('The payment has been denied.');
break;
case 'update':
$order->getPayment()
->registerPaymentReviewAction(Mage_Sales_Model_Order_Payment::REVIEW_ACTION_UPDATE, true);
$message = $this->__('Payment update has been made.');
break;
default:
throw new Exception(sprintf('Action "%s" is not supported.', $action));
}
$order->save();
$this->_getSession()->addSuccess($message);
} catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
} catch (Exception $e) {
$this->_getSession()->addError($this->__('Failed to update the payment.'));
Mage::logException($e);
}
$this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
}
/**
* Add order comment action
*/
public function addCommentAction()
{
if ($order = $this->_initOrder()) {
try {
$response = false;
$data = $this->getRequest()->getPost('history');
$notify = isset($data['is_customer_notified']) ? $data['is_customer_notified'] : false;
$visible = isset($data['is_visible_on_front']) ? $data['is_visible_on_front'] : false;
$order->addStatusHistoryComment($data['comment'], $data['status'])
->setIsVisibleOnFront($visible)
->setIsCustomerNotified($notify);
$comment = trim(strip_tags($data['comment']));
$order->save();
$order->sendOrderUpdateEmail($notify, $comment);
$this->loadLayout('empty');
$this->renderLayout();
}
catch (Mage_Core_Exception $e) {
$response = array(
'error' => true,
'message' => $e->getMessage(),
);
}
catch (Exception $e) {
$response = array(
'error' => true,
'message' => $this->__('Cannot add order history.')
);
}
if (is_array($response)) {
$response = Mage::helper('core')->jsonEncode($response);
$this->getResponse()->setBody($response);
}
}
}
/**
* Generate invoices grid for ajax request
*/
public function invoicesAction()
{
$this->_initOrder();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/sales_order_view_tab_invoices')->toHtml()
);
}
/**
* Generate shipments grid for ajax request
*/
public function shipmentsAction()
{
$this->_initOrder();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/sales_order_view_tab_shipments')->toHtml()
);
}
/**
* Generate creditmemos grid for ajax request
*/
public function creditmemosAction()
{
$this->_initOrder();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/sales_order_view_tab_creditmemos')->toHtml()
);
}
/**
* Generate order history for ajax request
*/
public function commentsHistoryAction()
{
$this->_initOrder();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/sales_order_view_tab_history')->toHtml()
);
}
/**
* Cancel selected orders
*/
public function massCancelAction()
{
$orderIds = $this->getRequest()->getPost('order_ids', array());
$countCancelOrder = 0;
$countNonCancelOrder = 0;
foreach ($orderIds as $orderId) {
$order = Mage::getModel('sales/order')->load($orderId);
if ($order->canCancel()) {
$order->cancel()
->save();
$countCancelOrder++;
} else {
$countNonCancelOrder++;
}
}
if ($countNonCancelOrder) {
if ($countCancelOrder) {
$this->_getSession()->addError($this->__('%s order(s) cannot be canceled', $countNonCancelOrder));
} else {
$this->_getSession()->addError($this->__('The order(s) cannot be canceled'));
}
}
if ($countCancelOrder) {
$this->_getSession()->addSuccess($this->__('%s order(s) have been canceled.', $countCancelOrder));
}
$this->_redirect('*/*/');
}
/**
* Hold selected orders
*/
public function massHoldAction()
{
$orderIds = $this->getRequest()->getPost('order_ids', array());
$countHoldOrder = 0;
$countNonHoldOrder = 0;
foreach ($orderIds as $orderId) {
$order = Mage::getModel('sales/order')->load($orderId);
if ($order->canHold()) {
$order->hold()
->save();
$countHoldOrder++;
} else {
$countNonHoldOrder++;
}
}
if ($countNonHoldOrder) {
if ($countHoldOrder) {
$this->_getSession()->addError($this->__('%s order(s) were not put on hold.', $countNonHoldOrder));
} else {
$this->_getSession()->addError($this->__('No order(s) were put on hold.'));
}
}
if ($countHoldOrder) {
$this->_getSession()->addSuccess($this->__('%s order(s) have been put on hold.', $countHoldOrder));
}
$this->_redirect('*/*/');
}
/**
* Unhold selected orders
*/
public function massUnholdAction()
{
$orderIds = $this->getRequest()->getPost('order_ids', array());
$countUnholdOrder = 0;
$countNonUnholdOrder = 0;
foreach ($orderIds as $orderId) {
$order = Mage::getModel('sales/order')->load($orderId);
if ($order->canUnhold()) {
$order->unhold()
->save();
$countUnholdOrder++;
} else {
$countNonUnholdOrder++;
}
}
if ($countNonUnholdOrder) {
if ($countUnholdOrder) {
$this->_getSession()->addError($this->__('%s order(s) were not released from holding status.', $countNonUnholdOrder));
} else {
$this->_getSession()->addError($this->__('No order(s) were released from holding status.'));
}
}
if ($countUnholdOrder) {
$this->_getSession()->addSuccess($this->__('%s order(s) have been released from holding status.', $countUnholdOrder));
}
$this->_redirect('*/*/');
}
/**
* Change status for selected orders
*/
public function massStatusAction()
{
}
/**
* Print documents for selected orders
*/
public function massPrintAction()
{
$orderIds = $this->getRequest()->getPost('order_ids');
$document = $this->getRequest()->getPost('document');
}
public function pdfinvoicesAction(){
$orderIds = $this->getRequest()->getPost('order_ids');
$flag = false;
if (!empty($orderIds)) {
foreach ($orderIds as $orderId) {
$invoices = Mage::getResourceModel('sales/order_invoice_collection')
->setOrderFilter($orderId)
->load();
if ($invoices->getSize() > 0) {
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf($invoices);
} else {
$pages = Mage::getModel('sales/order_pdf_invoice')->getPdf($invoices);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
}
if ($flag) {
return $this->_prepareDownloadResponse('invoice'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf');
} else {
$this->_getSession()->addError($this->__('There are no printable documents related to selected orders.'));
$this->_redirect('*/*/');
}
}
$this->_redirect('*/*/');
}
public function pdfshipmentsAction(){
$orderIds = $this->getRequest()->getPost('order_ids');
$flag = false;
if (!empty($orderIds)) {
foreach ($orderIds as $orderId) {
$shipments = Mage::getResourceModel('sales/order_shipment_collection')
->setOrderFilter($orderId)
->load();
if ($shipments->getSize()) {
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_shipment')->getPdf($shipments);
} else {
$pages = Mage::getModel('sales/order_pdf_shipment')->getPdf($shipments);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
}
if ($flag) {
return $this->_prepareDownloadResponse('packingslip'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf');
} else {
$this->_getSession()->addError($this->__('There are no printable documents related to selected orders.'));
$this->_redirect('*/*/');
}
}
$this->_redirect('*/*/');
}
public function pdfcreditmemosAction(){
$orderIds = $this->getRequest()->getPost('order_ids');
$flag = false;
if (!empty($orderIds)) {
foreach ($orderIds as $orderId) {
$creditmemos = Mage::getResourceModel('sales/order_creditmemo_collection')
->setOrderFilter($orderId)
->load();
if ($creditmemos->getSize()) {
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_creditmemo')->getPdf($creditmemos);
} else {
$pages = Mage::getModel('sales/order_pdf_creditmemo')->getPdf($creditmemos);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
}
if ($flag) {
return $this->_prepareDownloadResponse('creditmemo'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf');
} else {
$this->_getSession()->addError($this->__('There are no printable documents related to selected orders.'));
$this->_redirect('*/*/');
}
}
$this->_redirect('*/*/');
}
public function pdfdocsAction(){
$orderIds = $this->getRequest()->getPost('order_ids');
$flag = false;
if (!empty($orderIds)) {
foreach ($orderIds as $orderId) {
$invoices = Mage::getResourceModel('sales/order_invoice_collection')
->setOrderFilter($orderId)
->load();
if ($invoices->getSize()){
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf($invoices);
} else {
$pages = Mage::getModel('sales/order_pdf_invoice')->getPdf($invoices);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
$shipments = Mage::getResourceModel('sales/order_shipment_collection')
->setOrderFilter($orderId)
->load();
if ($shipments->getSize()){
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_shipment')->getPdf($shipments);
} else {
$pages = Mage::getModel('sales/order_pdf_shipment')->getPdf($shipments);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
$creditmemos = Mage::getResourceModel('sales/order_creditmemo_collection')
->setOrderFilter($orderId)
->load();
if ($creditmemos->getSize()) {
$flag = true;
if (!isset($pdf)){
$pdf = Mage::getModel('sales/order_pdf_creditmemo')->getPdf($creditmemos);
} else {
$pages = Mage::getModel('sales/order_pdf_creditmemo')->getPdf($creditmemos);
$pdf->pages = array_merge ($pdf->pages, $pages->pages);
}
}
}
if ($flag) {
return $this->_prepareDownloadResponse('docs'.Mage::getSingleton('core/date')->date('Y-m-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf');
} else {
$this->_getSession()->addError($this->__('There are no printable documents related to selected orders.'));
$this->_redirect('*/*/');
}
}
$this->_redirect('*/*/');
}
/**
* Atempt to void the order payment
*/
public function voidPaymentAction()
{
if (!$order = $this->_initOrder()) {
return;
}
try {
$order->getPayment()->void(
new Varien_Object() // workaround for backwards compatibility
);
$order->save();
$this->_getSession()->addSuccess($this->__('The payment has been voided.'));
} catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage());
} catch (Exception $e) {
$this->_getSession()->addError($this->__('Failed to void the payment.'));
Mage::logException($e);
}
$this->_redirect('*/*/view', array('order_id' => $order->getId()));
}
protected function _isAllowed()
{
if ($this->getRequest()->getActionName() == 'view') {
return Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view');
}
return Mage::getSingleton('admin/session')->isAllowed('sales/order');
}
/**
* Export order grid to CSV format
*/
public function exportCsvAction()
{
$fileName = 'orders.csv';
$grid = $this->getLayout()->createBlock('adminhtml/sales_order_grid');
$this->_prepareDownloadResponse($fileName, $grid->getCsvFile());
}
/**
* Export order grid to Excel XML format
*/
public function exportExcelAction()
{
$fileName = 'orders.xml';
$grid = $this->getLayout()->createBlock('adminhtml/sales_order_grid');
$this->_prepareDownloadResponse($fileName, $grid->getExcelFile($fileName));
}
/**
* Order transactions grid ajax action
*
*/
public function transactionsAction()
{
$this->_initOrder();
$this->loadLayout(false);
$this->renderLayout();
}
}