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