diff --git a/modules/order/src/OrderServiceProvider.php b/modules/order/src/OrderServiceProvider.php new file mode 100644 index 0000000..ea9b5ff --- /dev/null +++ b/modules/order/src/OrderServiceProvider.php @@ -0,0 +1,28 @@ +getParameter('container.modules'); + + if (isset($modules['entity_print'])) { + $container->register('entity_print.renderer.commerce_order', 'Drupal\commerce_order\Renderer\OrderEntityRenderer') + ->addArgument(new Reference('renderer'), new Reference('entity_print.asset_renderer'), new Reference('event_dispatcher'), new Reference('entity_type.manager'), new Reference('commerce_order.order_total_summary')); + } + } + +} diff --git a/modules/order/src/Renderer/OrderEntityRenderer.php b/modules/order/src/Renderer/OrderEntityRenderer.php new file mode 100644 index 0000000..6f75b9f --- /dev/null +++ b/modules/order/src/Renderer/OrderEntityRenderer.php @@ -0,0 +1,91 @@ +orderTotalSummary = $order_total_summary; + $this->profileViewBuilder = $entity_type_manager->getViewBuilder('profile'); + } + + /** + * {@inheritdoc} + */ + public function render(array $orders) { + return array_map([$this, 'renderSingle'], $orders); + } + + /** + * {@inheritdoc} + */ + protected function getLabel(EntityInterface $entity) { + return t('Order @id receipt', ['@id' => $entity->label()]); + } + + /** + * Builds a print ready render array for a single order. + * + * @param \Drupal\commerce_order\Entity\OrderInterface $order + * The order entity. + * + * @return array + * The render array. + */ + protected function renderSingle(OrderInterface $order) { + // Use the order receipt template for Entity Print render. + $build = [ + '#theme' => 'commerce_order_receipt', + '#order_entity' => $order, + '#totals' => $this->orderTotalSummary->buildTotals($order), + ]; + + if ($billing_profile = $order->getBillingProfile()) { + $build['#billing_information'] = $this->profileViewBuilder->view($billing_profile); + } + + return $build; + } + +} diff --git a/modules/order/templates/commerce-order--admin.html.twig b/modules/order/templates/commerce-order--admin.html.twig index f1b1c4a..927cf01 100644 --- a/modules/order/templates/commerce-order--admin.html.twig +++ b/modules/order/templates/commerce-order--admin.html.twig @@ -79,6 +79,18 @@ {% endif %} + + {% if order.entity_print_view_pdf %} +
+ + {{ 'Order actions'|t }} + +
+ {{ order.entity_print_view_pdf }} +
+
+ {% endif %} + {# If the order has possible transitions, render the field for transition buttons. #} {% if order_entity.getState.getTransitions is not empty %}