WooCommerce extension updates & releases

tl;dr: “Well, Good News Everyone!”Professor Farnsworth,  “Hooray”  – Dr. Zoidberg

WooCommerce Print Invoices and Packing Lists, one of SkyVerge’s oldest plugins around (released February 2nd, 2012) just got updated with a brand new 3.0.0 release! This is a complete rewrite with lots of new features you’ve been asking for and many you probably never thought of but you’re going to love and use in your stores. What we have here now is the best and most feature complete WooCommerce extension to print invoices and packing slips.

Sit tight and read about what’s been cooking!

Improved Invoice Templates

WooCommerce Print Invoices and Packing Lists 3.0.0 uses new WooCommerce templates. The new templates contain many more hooks to let you customize the templates without having to import and edit them in your theme. There’s a single template for both Invoices and Packing Lists and we kept the templates as clear as possible and well documented.

But perhaps you won’t have to do any template editing at all: the new templates true power lies in the way we conceived them to fully integrate with the WordPress Customizer!

That’s right, you can now use the WordPress front end customizer to live edit and preview the appearance of your documents. You can change the custom information you want to display, the position of some elements, add a logo, alter some template colors, everything while looking at how the template will appear to shop admins and customers alike. Classical WYSIWYG!

WooCommerce Print Invoices / Packing Lists customize invoice

Customize Invoice display

Settings you were previously using to add content to parts of the templates will be retained. This makes editing settings as easy as possible. We moved all other settings among WooCommerce Settings pages, so they are all well organized. Here you can tweak settings that customize some dynamic aspects of Print Invoices and Packing Lists.

Invoice numbers, for example, can now match order numbers for simplicity. Plugins that modify the order number, such as Sequential Order Numbers Pro, will be able to influence this value too. Of course, we also retain the option to use the invoice number count and you can also set the invoice number prefix / suffix or use a mask or merge tag to parse a date value.

WooCommerce Print Invoices / Packing Lists invoice number

Match Order Numbers

Invoices will also let you to optionally show used coupon codes along with any customer details or notes.

WooCommerce Print Invoices / Packing lists invoice example

Invoice Example

Packing List Improvements

Packing Lists will benefit of all the changes brought to Invoices, naturally. Plus you will have newly added Packing Lists specific settings to further tweak their appearance. You can decide whether to show or not customer details, the customer note, or to exclude virtual items completely from packing lists.

WooCommerce Print Invoices / Packing Lists packing list settings

Packing lists are now automatically sorted and grouped by product category to assist with picking and packaging orders. This is a small but significant touch which we hope warehouse managers and shipping workers will appreciate to make their work faster, easier, and thus more efficient!

WooCommerce Print Invoices / Packing Lists packing list example

Speaking of warehouse workers: we understand there could be multiple people working at packing orders and managing the warehouse, therefore we added the possibility to send a Packing List to multiple email recipients.

WooCommerce Print Invoices / Packing Lists email

Improved Email Management

Previously in Print Invoices and Packing Lists we only had a setting to just enable or disable emails, which would send an invoice email to the customer when the order was completed.

Now you can manage emails with the rest of your WooCommerce Emails, along with customizing recipients for the new Packing List and Pick List emails.

WooCommerce Print Invoices / Packing Lists emails

Added Pick Lists for Shop Managers

Wait, Pick Lists you say? Not a typo, you’ve read it right! We have added a whole new document type to Print Invoices and Packing Lists!

Pick lists will allow shop managers to gather items needed for multiple orders at once — also sorted by category — and will adopt the packing list setting for virtual items. Pick Lists are available via orders bulk actions while reviewing WooCommerce Orders and they can be either printed, as the other documents, or sent to your defined list of recipients.

WooCommerce Print Invoices / Packing Lists pick list example

We put a lot of thought into warehouse management for this release and we hope this will be another great tool in the Swiss-army knife that Print Invoices and Packing Lists has become!

Bulk Management

Speaking of bulk actions, you can print or email all order documents in bulk to make your documents management fast and simple. Applying a bulk action for generating a Pick List will result in a single, long, document to be printed or emailed accordingly.

Bulk actions performed on Invoices and regular Packing Lists will create a multi-page document when printed (with page breaks after each order) or will send multiple emails for each selected order to process.

WooCommerce Print Invoices / Packing Lists bulk actions

Bulk printing no longer requires pop up windows for better cross-browser compatibility: you won’t run in browser pop-up blocking problems anymore and you can conveniently leave your documents in a browser’s tab.

WooCommerce Print Invoices / Packing Lists print bulk list

Finally, you can also filter orders by invoice / packing list printed status to quickly find and access documents that have been or have not been printed by a shop admin before. This can be particularly handy if your store processes several orders every day and you want to make sure not to miss anything!

WooCommerce Print Invoices / Packing Lists order filtering

You can also search orders by their invoice number to quickly find the order a customer is referencing by invoice (if you use unique invoice numbers rather than the order number).

Under the hood there are a lot more tweaks, bug fixes, and users’ feature requests implemented. Some of these will be just as evident as the major features outlined above, some others will be of particular use to advanced users, agencies, freelancers and designers alike.

I’ll let Tamara take over for this part to introduce you to some of the changes we’ve made for developers in Print Invoices / Packing Lists version 3.0.

For Developers

Version 3.0.0 was written with extensibility in mind. If you’ve ever worked with a theme that overrides many WooCommerce templates, you understand the work (and pain) involved with updating to a new version of WooCommerce.

With this in mind, we added many actions and filters to make it easier to customize invoices, packing lists, and pick lists without touching a single template – assuming that the required change isn’t already possible in the new Customizer settings 😉 .

Not to worry, though, the document templates can be fully overridden if you would like more fine-grained control.

Because I am a bit of a coffee fanatic, my examples will focus on a coffee and espresso machine eCommerce store, but the same principles can be applied to any store.

  1. It’s often a good idea to give your customers incentive to return to your store and to purchase more products. If a customer purchases an espresso machine, you may want to use custom code to generate a coupon code that they can use on their next purchase of coffee or accessories. A great place to display this coupon code would be in header of the packing list or invoice, which can be easily done using the 'wc_pip_header' action.

  2. You may also want to display a link to the care instructions for the espresso machine. You can use the 'wc_pip_document_table_row_item_data' filter to append any information into specific cells in the document table.

  3. Another important pain point we wanted to address with this rewrite was the difficulty of adding custom columns to the document template. I’m happy to say that this can now be achieved with a couple of filters and 100% less headache.

    For instance, you may want to add a “Warranty” column to display specific warranty information on your invoices. The 'wc_pip_document_table_headers' filter allows you to change existing table headers or add new ones while the 'wc_pip_document_table_row_item_data' filter I mentioned above allows you to control the table cell content of existing and new columns. Therefore, these two filters can be used to add a new column to your invoices, packing lists, or pick lists.

    The plugin also allows custom code to set a proportional column width using the 'wc_pip_document_column_widths' filter, which you may need to use to expand the width of your new custom column.

These are just a few examples of what you can do with the hooks available in the new version. We’ve put together a hook reference for developers to get a better idea of the actions and hooks available, please give it a quick read if you’re interested in customizing the extension.

Published by

Fulvio Notarstefano

Fulvio is a WordPress engineer, and spends most of his time on new plugin development and updating existing plugins. You'll find him on the SkyVerge blog keeping you in the loop on what's new with our plugins, along with helping in your support threads.

Tamara Zuk

Tamara is our support engineer extraordinaire, often found working on our most complicated support conversations. You can frequently find her answering your questions, smashing bugs, and maintaining our code snippets.

32 Comments

  1. The older version 2.7.1 was more powerful as we can see the body template file, easy to follow and can be customized.

    In this version, we don’t see this screenshot of an invoice like the way you are presenting it here. The printout is missing the page break when printing bulk. Billing address and shipping address are aligned to the left, not next to each other. The SKU column is blank and its value is shifting towards the description…

    Sorry to mention but it is a mess and I have 4 websites using your extension. Unfortunately I went back to the older version until I find a better solution that this broken update. Nothing personal but I’m pissed seeing an end to what was a great extension before.

    • Hey Tarek! Thanks so much for this feedback. First, we are more than happy to help out with any specific issues via the help desk, such as the page break in bulk printing — I definitely see this for all documents when I’m testing out printing docs, so we’d be glad to get you sorted with these issues!

      …as we can see the body template file, easy to follow and can be customized.

      You can now customize template layout easier without code using the Customizer, and we’ve added hooks to let you customize it without overriding templates so that they can be updated in the future. The footer and header templates are located in the templates/pip/ folder, and the content / body parts are located in templates/pip/content

      Billing address and shipping address are aligned to the left, not next to each other.

      Sounds like something our CSS fix in v3.0.2 fixed, please check this version out instead. The max-widths had an issue prior to this that was patched.

      The SKU column is blank and its value is shifting towards the description…

      Do you have SKUs set for your products? If so, this would be something we’d need to troubleshoot in support, I can’t replicate this locally.

      Nothing personal but I’m pissed seeing an end to what was a great extension before.

      In previous versions, the plugin used non-standard functions to get data that didn’t work very well with other plugins, so this was a much-needed update for many stores using other extensions, and unfortunately fixing major issues for some stores will cause changes in what other stores are seeing. As always, a major update will have small bugs to work out. I’m sorry to hear that you’ve run into issues with the upgrade, and we’re more than happy to help get them patched up for you! If you’d like us to look into a particular ticket, please add the 6-digit ticket number here and we can check this out for you.

  2. Thanks Beka for your quick response!

    The ticket was created yesterday – ticket # 402534

    I have a testing account that we troubleshoot sometimes to test adding new features before we add it to the live site. It is a mimic environment copy and I can give access to the admin area of it if needed – please let me know if that would help.

    • Thanks Tarek 🙂 Looks like Tam already got us CC’ed there, we’re trying to replicate some of what you outlined, but if you could update the ticket with staging admin creds, that would be super helpful!

      • Thanks Beka,
        I have created a temporary admin credential and updated the ticket at Woo. We have a plugin called advanced code editor that can help tweak any of the files to avoid giving access to FTP credentials. If you prefer to have FTP access, let me know…

  3. Ok so just to be clear there is no longer the ability to override the print invoice/packing via a theme override template file? We now have to use the customizer for the base stuff and then use hooks and filters to add/modify from here on out?

    Our problem is first, the theme and other plugin enqueues are not dequeued properly in this plugin so they can effect and break the functionality of this plugin. Really, there should be nothing except this plugin’s code unless we specifically override that with our own custom code.

    The next problem we encountered is the customizer is too boxed in to a specific layout. Additionally when adjusting font sizes, there is some built in “fixed” math that appears to set the H1 value and then behind the scenes other heading tags are given built-in calculated values that we can’t control. In our case, and this could be part of the first thing I mentioned with style sheet conflicts, is that one heading may be too large, say h2, while another h4 for example is too small. The slider control is very frustrating as you can’t see the value until you release the control and often it is not the number you expect.

    Lastly, the inline styles, in which some are in the head, some in the body, makes our skin crawl and is difficult to override without a deeper understanding of how it works. Without a template file to look at, we have to look at hooks and filters which is just a long list w/ basic descriptions. We appreciate this extensiveness of this plugin release, however to know what we really need to do it seems like a time consuming process to learn which is the right filter/hook to use for a particular task and then use var_dump or similar to see what result we have to work with so we can further customize it.

    A visual aid of the anatomy of this plugin with it’s filter/hooks and when they fire in the chain would be extremely helpful.

    • Hi there! Thanks so much for this detailed feedback, really appreciate you taking the time to share this 🙂

      Ok so just to be clear there is no longer the ability to override the print invoice/packing via a theme override template file? We now have to use the customizer for the base stuff and then use hooks and filters to add/modify from here on out?

      The template structure has changed to be more like the WooCommerce core structure, but it can be overridden if needed. We have also added more hooks and pluggable sections so that you don’t have to override templates to customize them, and that they better use WooCommerce core functions where possible. We recommend using these for customizations where possible to future-proof your changes, but overrides would not be blocked.

      If you did need to override something, you could move the templates into a woocommerce/pip/ directory in your theme, matching the way the plugin’s templates folder is set up.

      Our problem is first, the theme and other plugin enqueues are not dequeued properly in this plugin so they can effect and break the functionality of this plugin.

      Are you seeing this on real invoices, or within the customizer? If you have a ticket open via the Woo help desk, also happy to dig into this with you, just let me know the ticket number.

      Additionally when adjusting font sizes, there is some built in “fixed” math that appears to set the H1 value and then behind the scenes…The slider control is very frustrating as you can’t see the value until you release the control and often it is not the number you expect.

      Good feedback here, thank you! I’m noting this to see if we can improve the font-size selectors in real time. I’m not sure if this is possible since I don’t work with the customizer often myself, so we’ll need some research here.

      Lastly, the inline styles, in which some are in the head, some in the body, makes our skin crawl and is difficult to override without a deeper understanding of how it works. Without a template file to look at, we have to look at hooks and filters which is just a long list w/ basic descriptions.

      Styles are all in the document header, not inline — which template are you looking at specifically? Only the column widths may be printed inline, but the styles are needed in the document head as the invoice can also be sent as an HTML email as well.

      The styles in the header are all contained in the styles.php template file, which can be overridden if you’d like to, or even better, you can use the built in wc_pip_styles action to add your own styles here.

      …it seems like a time consuming process to learn which is the right filter/hook to use for a particular task and then use var_dump or similar to see what result we have to work with so we can further customize it. A visual aid of the anatomy of this plugin with it’s filter/hooks and when they fire in the chain would be extremely helpful.

      We have a developer hook reference available that will provide template hooks, other document-specific hooks, overall plugin hooks, along with template functions.

      I know the changes here are definitely a departure from the previous plugin structure, and definitely appreciate you sharing this feedback with us! We felt that we needed to make some drastic improvements in the plugin templates, as they were fairly rigid and difficult to worth with. Furthermore, making any updates for improved plugin compatibility or support for standard WooCommerce functions was near impossible, as overriding the main template was the only true way to customize it, so a lot of people didn’t update it. Our goal here was to make most customizations possible without template overrides, via either the customizer or far more flexible / pluggable templates (and ones more consistent with WooCommerce), so the plugin can grow much better as WooCommerce does, and we can update templates as needed.

  4. Hi,
    I am really enjoying the upgrades. My question is where can I change the columns that appear on a packing slip? Specifically, I would like to remove product weight and leave it as a blank box for the box packers to check off as they pack. Along the same lines, as a result of whatever last update we did, now there is a new column on the packing slips that just has the word “array” on each row. Kinda fun, but I would love to know where I can get rid of the array column and change the weight column to just an empty box.

    Thanks so much,
    Tom

    • Hey Tom, thanks for the feedback here! I have a blog tutorial scheduled for this week on adding / modifying columns, but if you’d like to submit a help request and let me know the ticket number, we’d be happy to point you in the right direction here. We should also look into that “array” weirdness, as that’s definitely not expected, and not something I can replicate, so we’d need to test in your site specifically. thanks!

  5. Hi,
    I would really like to buy this plugin because I need it, but it doesn’t have just one thing I need. I want to choose specific product category and than to send all orders that contain only product from that category to my shop admin. So my shop admin who is charge only for packing and sending products from only one product category will get only emails with orders for him. Can you implement this?

  6. how do i add a custom checkout field to the invoice now that there are no hard coded templates and customizer can only accept text to add to it???

    • Hi Jason, there are still templates, they’re just different from the single template file that was used before v3.0. We have some examples of using the plugin’s hooks in this article so that changes are upgrade-safe, but the templates are still there and can still be overridden if large changes are needed.

      • i am not a developer so i am not familiar with hooks and how they work besides echoing a meta value. Ill have to read through the documents a bit and see if ic an figure it out.

        • for exampe: $type, $action, $document, $order

          what are the acceptable values for those variables??? type what??? post?

  7. Hello – Great article! From the admin side it is easy to print off an invoice. From the front end, what would the PHP look like if I wanted to place a snippet in the myaccount/my-orders.php file?

    Thanks

    David

  8. Sorry, but the admin side allows you to view or print whilst the front end only allows view (the user has another convoluted step to make a PDF). Therefore, I would like to add another button on the front end for Print (at which point the user can choose their printer). Thanks!

    • I’ve had some success! To my theme’s functions.php I added:
      add_filter( ‘wc_pip_show_print_dialog’, ‘__return_true’ );

      Now, I just need to find out how to change ‘View invoice’ to ‘Print invoice’

      Please can you help?

  9. I’ve just added WooCommerce Print Invoices & Packing list plugin to my site. I’m selling silk threads and have many shades within each category. The pick list is the key part of this plugin for me. I have set up the pick list to select the products in ‘categories’. The pick list is fine until it shows products where there is a variation. I have just the one category that has two variations, ie 150m and 80m lengths. The pick list is lumping all the shades within each variation together ie. not showing each separate shade within that variation.

    Hope you can help me with this problem as I purchased this plugin mainly for the pick list facility.

    • Hey Susan, we can definitely help with this. The variations are separated out in my test store, so there’s likely something else going on here — if you can submit a help desk thread here our team can have a look for you!

      • Dear Beka I would love to open a ticket but when I click on the link to open the ticket it takes me to a link which is headed ‘If you recently updated to WooCommerce 3.+’ I am therefore unable to obtain a ticket number.

        I have two other questions re the Invoice/Packing List plug in, which are – is it possible for the ‘weight’ column to be left blank on all lists and with no heading and also I would like to show a date on the packing list. Probably simple things to do but I’m not sure how to. Many thanks, Susan

        • Hey Susan, if you go here and scroll down from that notice, you’ll be able to select the topic for opening a new thread 🙂

          is it possible for the ‘weight’ column to be left blank on all lists and with no heading

          This isn’t possible out of the box, but could be done with customization from a developer pretty easily.

          and also I would like to show a date on the packing list.

          Same goes here, though this is something we’ve considered for a new release — would you be looking for the order date, or printed date?

  10. Hi there, I don’t seem to be able to print off invoices individually since installing this plugin. The ‘bulk actions’ drop down will not work unless there is more than one order selected. When I press the little print icon on the right side of the order, nothing happens. I am able to view the order and mark it as complete using the icons, but the print icon does not seem to work. Could you help?

  11. I have Woocommerce website that does not show VAT, and clients don’t want that to change.

    I have purchased WooCommerce Print Invoices/Packing Lists.

    I would like to add an additional row to the bottom of the table with a calculation of how much VAT was in the invoice using a simple calculation based on the invoice total.

    I have achieved this by editing order-table.php but would prefer to add this by adding a filter to functions.php.

    I have looked at https://docs.woocommerce.com/document/woocommerce-print-invoice-packing-list/ but can not seem to achieve what I need.

  12. The totals started showing on all pages in a multi page invoice. It only happens when we print not in the preview. This is confusing to our shippers. How do we get the totals to only print on the last page?

  13. Is possible to show payment method and the day the order was placed?

  14. Hi, Is there a way to display the data from a product custom field underneath the name of the product on the packing list? We’d like to put the warehouse isle and bin number under each product so it’s easy for packers to locate items quickly.

    Thank you,

    Brian

Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.