public ActionResult ItemLabel(string id, PrinterInfo printerInfo)
 {
     return ItemLabelBase(id, printerInfo);
 }
        protected ActionResult ItemLabelBase(string id, PrinterInfo printerInfo)
        {
            printerInfo = printerInfo ?? new PrinterInfo();
            LoadPrinterInfo(printerInfo);

            ProductionJob job = (from j in PrdnDBContext.ProductionJobs.Include("Product").Include("Priority").Include("Run.PrdnType")
                                 where j.SerialNo == id
                                 select j).FirstOrDefault();
            try {
                if (job != null)
                {
                    PrintJobLabel(printerInfo, job);
                }
                else {
                    InvItemViewModel itemModel = LookupInvItem(id);
                    PrintItemViewLabel(printerInfo, itemModel);
                }

                printerInfo.Message = SystemExtensions.Sentence(LocalStr.Label, LocalStr.Printed, LocalStr.For, LocalStr.SerialNo, id, ".",
                    LocalStr.LabelPrinter, printerInfo.PrinterName, printerInfo.PrinterHostName, printerInfo.IsNotNull(p => p.PrinterPort) ? printerInfo.PrinterPort.ToString() : null);
            }
            catch (Exception ex)
            {
                printerInfo.Message = SystemExtensions.Sentence(LocalStr.Label, LocalStr.Print, LocalStr.Error, ":", ex.GetType().Name + " - " + ex.Message).SafeSub(0, 450);
            }

            return View(printerInfo);
        }