Check-In: A Modification to Cut After the Last Label

  • By Jim Michael 2 Years Ago
The original article has been updated on July 10, 2018 to use new Github code location and Rock v7 Pages functionality.

The Problem

If you have check-in printers with cutters, you know the bliss of nonexistent printer jams and smooth-running check-ins. What's not so great is that a Zebra printer will cut between each label -- which can be tedious, and in our experience actually lengthens check-in times -- and Rock (out of the box) has no facility to change this. The good news is that the guys over at NewPointe have done the hard work to fix this, and all we have to do is implement it!

The Solution

NewPointe has developed and shared their solution to this cutting problem, which involves a replacement "Success" block within check-in along with a custom file handler, and the end result is that the printer will cut after all labels have printed for that specific check-in. This gives you the best of both worlds: higher speed printing vs. cutting between each label, while cutting at the end of the job.

Note that this solution works with both server and client-side printing, so no need to change the way you print to get this to work.

The Caveat

Before we get into the specifics of this solution, I need to mention that it involves swapping out a core check-in block for a custom one. What does that mean? It means that if the core block gets updated in the future (which might contain anything from new features to bug fixes to a completely new architecture for that portion of Rock), you won't "get" any of those changes because you're no longer running that block. To be specific, your installation will have the updated block under the hood, but you just won't be running it.

This simply means that you must be aware of this reality and bear the responsibility of keeping an eye on changes to the core block over time, be willing to swap back from this custom block if a future change to core breaks it in some way (assuming it doesn't get updated by the NewPointe guys, too), etc. Luckily this particular block is in a portion of Rock that is less likely to change frequently, but the possibility is always there. So, if all of that hasn't freaked you out and running custom code doesn't make you break out into a cold sweat, carry on!

The Steps

Sorry, this is not the kind of post that lends itself to lots of pretty pictures, but just follow these steps and you'll be successful.

  1. Download the latest ZIP file from

  2. Unzip the file to the ROOT of your Rock web directory (e.g. D:\RockRMS or C:\inetpub\wwwroot or wherever YOUR Rock server lives.) When done properly you should have:
    • A NP_GetCheckinLabel.ashx.cs file in your /App_Code directory
    • A CustomCheckinSuccess block (two files) in a new /plugins/org_newpointe/CheckinBatchCut directory
    • A NP_GetCheckinLabel.ashx file at the root of your Rock install.

  3. In Rock, use Admin Tools | CMS Configuration | Pages to navigate to your Check-In | Success page.

  4. In the Main Zone, you should see the existing Success and Idle Timeout blocks. Click Add Block to Zone and in the Type drop-down, search for Newpointe. You should get a match to the NewPointe Custom Checkin Success block. Add that block to the page and click Save.

  5. Click the block properties of the original Success block and note the various settings. Modify the settings on the Custom Checkin Success block to match. It might be easier to use another Rock server running default check-in for this as a reference. Use if you don't have another server to compare to (but you're doing this on a test server anyway, right? You wouldn't dare make these kinds of changes to a production Rock server without testing it… right?)

  6. Once you're confident the settings are identical on the new block, delete the original Success block.

  7. Drag your Custom Checkin Success block above the Idle Timeout block.

  8. Put the printer in Cutter mode if it's not already configured that way. This can be done via the Windows driver (GK/GX models) or via the front panel (ZD500) or by ensuring that ^MMC (vs. ^MMT) is in the ZPL of your labels. This would normally make the printer cut between each label, but the custom block will force the printer to delay cutting until the end of the job.

  9. Perform a check-in. Did it cut after the job? If so, success! 


If things didn't go quite right, don't worry... it's probably an easy fix. Here are some things to try:

  • If it didn't cut at all, it could be that your labels have an embedded ^MMT command which forces the printer into Tear-off mode, which overrides everything we're trying to do. Just edit the label within Rock to remove the ^MMT command, and set your printer back to cut mode.

  • If it didn't print at all, you likely got some or all of the files in the wrong place, particularly the NP_GetCheckinLabel file handler. Make absolutely sure you unzipped the file to the root of your Rock server and that the files are now in the places described in Step 2

  • If your labels still cut between each one instead of at the end of the job, this means either you didn't get the files in the right places in step 2 above, or that you didn't successfully replace the default Success block with the custom one. Verify steps 3-6 were properly done.

  • If all of your printers have cutters, consider adding ^MMC (cut mode) to all labels vs. relying on the printer setting, which prevents a situation where a label with ^MMT (tear mode) accidentally gets sent to the printer, disabling all cutting on that unit until a label comes by with ^MMC to enable cutting again or the printer cut mode is manually reset. You should only do this if you don't have ANY non-cutting printers doing check-in, as the ^MMC command will prevent those models from pushing the label out far enough to tear it correctly.

Hopefully you're now cutting at the end of the job vs. between each label. A big thanks to Tyler Schrock over at NewPointe for developing this mod and sharing it with us!

The Crossing
St. Louis, MO

IT Manager at The Crossing in St. Louis. Lover of all things Rock!