Configure commerce_orders view
Add the Bulk Operations Commerce Order field if it's not already there. In the fields configuration, you need to check "Pass ids as arguments to a page". The other two checkboxes are optional. Final thing to do is enter the url path. Apply and save view. You should see the following or something like it:hook_menu
We need to use hook_menu to create the page specified above.function commerce_bulk_printing_menu() { $items = array(); $items['admin/commerce/orders/print/%'] = array( 'title' => 'Bulk Printing', 'description' => 'Outputs printable invoices for each order id passed.', 'page callback' => '_commerce_bulk_printing_print', 'page arguments' => array(4), 'access callback' => TRUE, 'weight' => 10, ); return $items; }
_commerce_bulk_printing_print($ids)
And now for the function that uses the order ids we passed and outputs printable invoices./** * outputs a printable view of invoices * most of the functionality in this module was taken from commerce_invoice_receipt_view_print */ function _commerce_bulk_printing_print($ids) { $orderids = explode(",", $ids); $styles[] = array( 'type' => 'file', 'media' => 'all', 'data' => commerce_invoice_reciept_css_path(), 'group' => CSS_DEFAULT, 'every_page' => FALSE, 'weight' => 0, 'preprocess' => FALSE, 'browsers' => array(), ); $html = drupal_get_css($styles); foreach($orderids as $orderid) { $order = commerce_order_load($orderid); $build = entity_view('commerce_order', array($order->order_id => $order), 'invoice', NULL, TRUE); $invoice_info = _commerce_invoice_receipt_get_invoice_info($order, $build); $html .= theme('commerce_order_invoice_view', array('info' => $invoice_info, 'order' => $order)); } print _emogrifier_process($html, NULL, NULL, NULL, NULL, NULL); }
Override commerce-order-invoice-view.tpl.php
When printing multiple orders, they will show up on the same page unless we specify when the page ends. In commerce-order-invoice-view.tpl.php, add page-break-after:always class to the body tag.That's it. You should now see a page like the image below when you try to print multiple orders
No comments:
Post a Comment