diff --git a/core/lib/Thelia/Action/Order.php b/core/lib/Thelia/Action/Order.php index 6b47d8881..fcbb38f98 100755 --- a/core/lib/Thelia/Action/Order.php +++ b/core/lib/Thelia/Action/Order.php @@ -300,6 +300,19 @@ class Order extends BaseAction implements EventSubscriberInterface $event->setOrder($order); } + /** + * @param OrderEvent $event + */ + public function updateDeliveryRef(OrderEvent $event) + { + $order = $event->getOrder(); + + $order->setDeliveryRef($event->getDeliveryRef()); + $order->save(); + + $event->setOrder($order); + } + /** * Returns an array of event names this subscriber wants to listen to. * @@ -330,6 +343,7 @@ class Order extends BaseAction implements EventSubscriberInterface TheliaEvents::ORDER_PAY => array("create", 128), TheliaEvents::ORDER_BEFORE_PAYMENT => array("sendOrderEmail", 128), TheliaEvents::ORDER_UPDATE_STATUS => array("updateStatus", 128), + TheliaEvents::ORDER_UPDATE_DELIVERY_REF => array("updateDeliveryRef", 128), ); } diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index 001938b8a..0545be8e9 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -70,10 +70,18 @@ \d+ - + Thelia\Controller\Admin\OrderController::updateStatus + + Thelia\Controller\Admin\OrderController::updateStatus + + + + Thelia\Controller\Admin\OrderController::updateDeliveryRef + + diff --git a/core/lib/Thelia/Controller/Admin/OrderController.php b/core/lib/Thelia/Controller/Admin/OrderController.php index c74e056d8..2ef709d94 100644 --- a/core/lib/Thelia/Controller/Admin/OrderController.php +++ b/core/lib/Thelia/Controller/Admin/OrderController.php @@ -28,6 +28,7 @@ use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Translation\Translator; use Thelia\Model\OrderQuery; use Thelia\Model\OrderStatusQuery; +use Thelia\Tools\URL; /** * Class OrderController @@ -50,17 +51,22 @@ class OrderController extends BaseAdminController )); } - public function updateStatus() + public function updateStatus($order_id = null) { if (null !== $response = $this->checkAuth("admin.order.update")) return $response; $message = null; try { - $orderId = $this->getRequest()->get("order_id"); - $order = OrderQuery::create()->findPk($orderId); + if($order_id !== null) { + $order_id = $order_id; + } else { + $order_id = $this->getRequest()->get("order_id"); + } - $statusId = $this->getRequest()->get("status_id"); + $order = OrderQuery::create()->findPk($order_id); + + $statusId = $this->getRequest()->request->get("status_id"); $status = OrderStatusQuery::create()->findPk($statusId); if(null === $order) { @@ -90,12 +96,42 @@ class OrderController extends BaseAdminController $params["order_page"] = $browsedPage; $this->redirectToRoute("admin.order.list", $params); } else { - $params["order_id"] = $orderId; - $this->redirectToRoute("admin.order.update.view", $params); + $params["order_id"] = $order_id; + $this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", $params))); + } + } + + public function updateDeliveryRef($order_id) + { + if (null !== $response = $this->checkAuth("admin.order.update")) return $response; + + $message = null; + + try { + $order = OrderQuery::create()->findPk($order_id); + + $deliveryRef = $this->getRequest()->get("delivery_ref"); + + if(null === $order) { + throw new \InvalidArgumentException("The order you want to update status does not exist"); + } + + $event = new OrderEvent($order); + $event->setDeliveryRef($deliveryRef); + + $this->dispatch(TheliaEvents::ORDER_UPDATE_DELIVERY_REF, $event); + } catch(\Exception $e) { + $message = $e->getMessage(); } + $params = array(); + if ($message) { + $params["update_status_error_message"] = $message; + } + $params["order_id"] = $order_id; + $this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", $params))); } } \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/OrderEvent.php b/core/lib/Thelia/Core/Event/OrderEvent.php index 03abe7cb7..f941e5e46 100755 --- a/core/lib/Thelia/Core/Event/OrderEvent.php +++ b/core/lib/Thelia/Core/Event/OrderEvent.php @@ -36,6 +36,7 @@ class OrderEvent extends ActionEvent protected $postage = null; protected $ref = null; protected $status = null; + protected $deliveryRef = null; /** * @param Order $order @@ -117,6 +118,14 @@ class OrderEvent extends ActionEvent $this->status = $status; } + /** + * @param $deliveryRef + */ + public function setDeliveryRef($deliveryRef) + { + $this->deliveryRef = $deliveryRef; + } + /** * @return null|Order */ @@ -188,4 +197,12 @@ class OrderEvent extends ActionEvent { return $this->status; } + + /** + * @return null|string + */ + public function getDeliveryRef() + { + return $this->deliveryRef; + } } diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index d20535a3f..1833f838f 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -302,6 +302,7 @@ final class TheliaEvents const ORDER_BEFORE_PAYMENT = "action.order.beforePayment"; const ORDER_UPDATE_STATUS = "action.order.updateStatus"; + const ORDER_UPDATE_DELIVERY_REF = "action.order.updateDeliveryRef"; const ORDER_PRODUCT_BEFORE_CREATE = "action.orderProduct.beforeCreate"; const ORDER_PRODUCT_AFTER_CREATE = "action.orderProduct.afterCreate"; diff --git a/templates/admin/default/order-edit.html b/templates/admin/default/order-edit.html index ff6b144d8..225d699c0 100644 --- a/templates/admin/default/order-edit.html +++ b/templates/admin/default/order-edit.html @@ -17,7 +17,7 @@ - + {ifloop rel='the-order'} @@ -29,18 +29,24 @@ {assign "orderStatusId" $STATUS} + + {$REF} + + + + {loop type="order-status" name="all-status"} + {assign "orderStatusLabel" "order_$CODE"} + {$TITLE} + {/loop} + + + + + {intl l="Ordered products"} {intl l="Invoice and Delivery"} - {intl l="Further information"} - - - {loop type="order-status" name="all-status"} - {assign "orderStatusLabel" "order_$CODE"} - {$TITLE} - {/loop} - - + @@ -149,9 +155,19 @@ - + {intl l='Delivery module'} - + + + + + + + + + + + {loop name="payment-module" type="module" id=$DELIVERY_MODULE} @@ -173,7 +189,7 @@ {intl l='Invoice informations'} - {intl l='PDF invoice'} + {intl l='PDF | Invoice'} @@ -248,7 +264,7 @@ {intl l='Delivery address'} - {intl l='PDF purchase order'} + {intl l='PDF | Purchase order'} @@ -311,56 +327,6 @@ - - - - - {intl l='Further information'} - - - - - {intl l='Status'} - - - - - - Status 1 - Status 2 - Status 3 - - - - - - - - {intl l='Order Tracking'} - - - - - - - - - - - - - {intl l='Bill'} - {intl l='Download bill to pdf'} - - - {intl l='Delivery'} - {intl l='Download delivery to pdf'} - - - - - - {/loop} @@ -502,4 +468,11 @@ {/javascripts} + + {/block} \ No newline at end of file
+