using System; using Microsoft.PointOfService; using System.Linq; using System.Globalization; using System.Text; using System.Collections.Generic; using System.Collections; using System.IO; using System.Reflection; //20171219 - Added stained items to Package Slip - maanie //20171219 - added stained item count to print dispatch slip - maanie //20171219 - added stained item count to tax invoice slip - maanie //20180119 - Added user who did the Pickup next to the Pre-list number - maanie //20180326 - use DB setting for VAT - maanie //20181109 - increased font size of Prelist number - maanie //20181114 - added customer vat no to invoice - maanie //20250318 - Updated barcode value to match unique ID shown on printout - maanie namespace Common { public class ReceiptPrinter { private static string Justify(int lineLength, string left, string right) { var padding = new string(' ', lineLength - left.Length - right.Length); return string.Concat(left, padding, right); } private static string PosPrint(params string[] p) { return String.Join(string.Empty, p.Select(o => o.ToString().Replace("|", "\u001b|")).ToArray()); } public static void PrintTrolleyNotes(PosPrinter posPrinter, int invoiceId) { var data = new StringBuilder(); using (var db = new DataModel()) { var invoice = db.Invoices.FirstOrDefault(i => i.InvoiceId == invoiceId); if (invoice == null) return; try { var categories = db.InventoryItemTypeCategories.ToList(); foreach (var category in categories) { var typeCategory = category; var invoiceItems = invoice.InvoiceItems.Where(t => t.InventoryItemType.InventoryItemTypeCategoryId == typeCategory.InventoryItemTypeCategoryId).OrderBy(o => o.InventoryItemType.ItemType).ThenBy(t => t.InventoryItemType.InventoryItemTypeSize.OrderPriority).ToList(); if (invoiceItems.Count == 0) continue; data.Append(PosPrint("|bC|4C|cA", invoice.Customer.Name, "\n")); data.Append(PosPrint("|500uF")); data.Append(PosPrint("|bC|2C|cA", category.Category, "\n|N")); data.Append(PosPrint("|300uF|bC", DateTime.Now.ToString("dd/MMMM/yyyy HH:mm", new DateTimeFormatInfo { MonthDayPattern = "MMMM" }), "\n")); data.Append(PosPrint("|500uF")); var total = 0; var lastItem = string.Empty; foreach (var invoiceItem in invoiceItems) { if (lastItem != invoiceItem.InventoryItemType.ItemType) { data.Append(PosPrint("|200uF")); data.Append(PosPrint(invoiceItem.InventoryItemType.ItemType, "\n")); } data.Append(PosPrint(Justify(posPrinter.RecLineChars, string.Format(" {0}", invoiceItem.InventoryItemType.InventoryItemTypeSize.Size), string.Format("x {0}", invoiceItem.ItemCount.ToString("N0"))), "\n")); total += invoiceItem.ItemCount; lastItem = invoiceItem.InventoryItemType.ItemType; } data.Append(PosPrint("|200uF")); data.Append(PosPrint("|bC|2C", Justify(posPrinter.RecLineChars / 2, "Total", total.ToString("N0")), "\n")); data.Append(PosPrint("|fP")); } posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Transaction); posPrinter.PrintNormal(PrinterStation.Receipt, data.ToString()); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Normal); } catch (PosControlException) { } } } public static void PrintPackage(PosPrinter posPrinter, int packageId) { var data = new StringBuilder(); using (var db = new DataModel()) { var package = db.Packages.FirstOrDefault(p => p.PackageId == packageId); if (package == null) return; try { // var dispatchPackage = db.DispatchPackages.FirstOrDefault(f => f.PackageId == package.PackageId); data.Append(Header(posPrinter, false, package.InvoiceItem.Invoice.Customer.CompanyID)); data.Append(PosPrint("|4C", package.InvoiceItem.Invoice.Customer.Name, "\n", "|N")); if (!string.IsNullOrEmpty(package.InvoiceItem.Invoice.Customer.AddressLine1)) data.Append(PosPrint(package.InvoiceItem.Invoice.Customer.AddressLine1, "\n")); if (!string.IsNullOrEmpty(package.InvoiceItem.Invoice.Customer.AddressLine2)) data.Append(PosPrint(package.InvoiceItem.Invoice.Customer.AddressLine2, "\n")); if (!string.IsNullOrEmpty(package.InvoiceItem.Invoice.Customer.AddressCity)) data.Append(PosPrint(package.InvoiceItem.Invoice.Customer.AddressCity, "\n")); if (!string.IsNullOrEmpty(package.InvoiceItem.Invoice.Customer.AddressPostCode)) data.Append(PosPrint(package.InvoiceItem.Invoice.Customer.AddressPostCode, "\n")); data.Append(PosPrint("|200uF")); data.Append(PosPrint("|500uF")); data.Append(PosPrint("|2C|cA", "PACKAGE", "\n", "|N")); data.Append(PosPrint("|200uF")); var reference = package.InvoiceItem.Invoice.Workload.Reference; var workloadId = package.InvoiceItem.Invoice.WorkloadId; var workorderId = string.IsNullOrEmpty(reference) ? workloadId.ToString() : reference; //20180119 - Added user who did the Pickup next to the Pre-list number - maanie var operatorAuthoriseId = package.InvoiceItem.Invoice.Workload.OperatorAuthoriseId; var pickupOperator = db.OperatorLogins.Where(o => o.OperatorLoginId == operatorAuthoriseId).Select(s => s.Username).FirstOrDefault(); //20181109 - increased font size of Prelist number - maanie data.Append(PosPrint("|2C|cA", string.Format("WorkOrder Id: {0} / {1}", workorderId, pickupOperator), "\n", "|N")); //data.Append(PosPrint("|300uF|bC", string.Format("WorkOrder Id: {0} / {1}", workorderId, pickupOperator), "\n", "|N")); data.Append(PosPrint("|500uF")); if (package.ItemCount > 0) { data.Append(PosPrint("|2C", string.Format("{0} x {1} {2}", package.ItemCount, package.InvoiceItem.InventoryItemType.InventoryItemTypeSize.Size, package.InvoiceItem.InventoryItemType.ItemType), "\n")); data.Append(PosPrint("|500uF")); } //20171219 - Added stained items to Package Slip - maanie if (package.ItemCountStain > 0) { data.Append(PosPrint("|2C", "STAINED ITEMS", "\n", "|N")); data.Append(PosPrint("|500uF")); data.Append(PosPrint("|2C", string.Format("{0} x {1} {2}", package.ItemCountStain, package.InvoiceItem.InventoryItemType.InventoryItemTypeSize.Size, package.InvoiceItem.InventoryItemType.ItemType), "\n")); data.Append(PosPrint("|500uF")); } posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Transaction); posPrinter.PrintNormal(PrinterStation.Receipt, data.ToString()); posPrinter.PrintBarCode(PrinterStation.Receipt, BarcodeGenerator.BarcodeValue(BarcodeGenerator.BarCodeType.Package, package.PackageId).ToString(), BarCodeSymbology.Code39, 1000, posPrinter.RecLineWidth, PosPrinter.PrinterBarCodeCenter, BarCodeTextPosition.Below); posPrinter.PrintNormal(PrinterStation.Receipt, PosPrint("|fP")); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Normal); } catch (PosControlException) { } } } public static void PrintInvoice(PosPrinter posPrinter, OperatorLogin operatorLogin, int customerId, int invoiceId, int deliveryId) { var data = new StringBuilder(); string taxInvoiceHeaderLabel = ""; using (var db = new DataModel()) { var customer = db.Customers.FirstOrDefault(f => f.CustomerId == customerId); if (customer == null) return; var invoice = db.vwInvoicesReadyToPrint2.FirstOrDefault(i => i.Id == invoiceId); if (invoice == null) return; try { data.Append(Header(posPrinter, true, customer.CompanyID)); data.Append(PosPrint(operatorLogin.Username, "\n")); data.Append(PosPrint("|500uF")); data.Append(PosPrint("|4C", customer.Name, "\n", "|N")); if (!string.IsNullOrEmpty(customer.AddressLine1)) data.Append(PosPrint(customer.AddressLine1, "\n")); if (!string.IsNullOrEmpty(customer.AddressLine2)) data.Append(PosPrint(customer.AddressLine2, "\n")); if (!string.IsNullOrEmpty(customer.AddressCity)) data.Append(PosPrint(customer.AddressCity, "\n")); if (!string.IsNullOrEmpty(customer.AddressPostCode)) data.Append(PosPrint(customer.AddressPostCode, "\n")); if (!string.IsNullOrEmpty(customer.VATNumber)) data.Append(PosPrint(string.Format("VAT no: {0}", customer.VATNumber), "\n")); //20181114 - added customer vat no to invoice - maanie data.Append(PosPrint("|200uF")); data.Append(PosPrint("|500uF")); //check if printing an invoice more than once if (invoice.Printed == false) taxInvoiceHeaderLabel = "TAX INVOICE"; else taxInvoiceHeaderLabel = "COPY TAX INVOICE"; data.Append(PosPrint("|2C|cA", taxInvoiceHeaderLabel, "\n")); data.Append(PosPrint("|2C|cA", deliveryId.ToString(), "\n", "|N")); //data.Append(PosPrint("|2C|cA", "*** # ", id.ToString(), " ***", "\n", "|N")); data.Append(PosPrint("|200uF")); try { var workload = db.Workloads.FirstOrDefault(f => f.WorkloadId == invoice.WorkloadId); //20180119 - Added user who did the Pickup next to the Pre-list number - maanie var operatorAuthoriseId = workload.OperatorAuthoriseId; var pickupOperator = db.OperatorLogins.Where(o => o.OperatorLoginId == operatorAuthoriseId).Select(s => s.Username).FirstOrDefault(); if (workload == null) { //20181109 - increased font size of Prelist number - maanie data.Append(PosPrint("|300uF|bC", "Pre List Number: ")); data.Append(PosPrint("|2C|cA", invoice.WorkloadId.ToString())); data.Append(PosPrint("|300uF|bC", string.Format(" / {0}", pickupOperator), "\n", "|N")); //data.Append(PosPrint("|300uF|bC", string.Format("Pre List Number: {0} / {1}", invoice.WorkloadId, pickupOperator), "\n", "|N")); } else { var reference = workload.Reference; var workloadId = workload.WorkloadId; var workorderId = string.IsNullOrEmpty(reference) ? workloadId.ToString() : reference; //20181109 - increased font size of Prelist number - maanie data.Append(PosPrint("|300uF|bC", "Pre List Number: ")); data.Append(PosPrint("|2C|cA", workorderId)); data.Append(PosPrint("|300uF|bC", string.Format(" / {0}", pickupOperator), "\n", "|N")); //data.Append(PosPrint("|300uF|bC", string.Format("Pre List Number: {0} / {1}", workorderId, pickupOperator), "\n", "|N")); //Added wash type - maanie 2016/05/19 var workloadType = db.WorkloadTypes.FirstOrDefault(w => w.WorkloadTypeId == workload.WorkloadTypeId); var type = workloadType.Type; data.Append(PosPrint("|300uF|bC", string.Format("Wash Type: {0}", type), "\n", "|N")); } data.Append(PosPrint("|300uF|bC", invoice.DateCreated.ToString(), "\n", "|N")); data.Append(PosPrint("|500uF")); } catch { } var lastCategory = string.Empty; var lastItemType = string.Empty; var inventory = db.GetWorkloadInventoryForDispatches(deliveryId).ToList(); double subTotal = 0; foreach (var item in inventory) { if (item.Category != lastCategory) data.Append(PosPrint("|200uF|2C", item.Category, "\n|N")); if (item.ItemType != lastItemType) data.Append(PosPrint("|100uF", item.ItemType, "\n")); if (item.ItemCount != 0) { double cost = (double)item.ItemCount * item.Cost.Value / 100.0; //double cost = (double)item.Cost.Value / 100.0; //cost = (double)1 * 0.123456789 / 100.0; subTotal += cost; var descriptionLine = string.Format(" {0} x {1}", item.ItemCount, item.Size); var costLine = string.Format("R {0}", cost.ToString("F")); // 10-11-2016 - adding rounding back - maanie //var costLine = string.Format("R {0}", (Math.Truncate(cost * 100) / 100).ToString("F2")); // 08-11-2016 - truncate instead of round - maanie var line = Justify(posPrinter.RecLineChars, descriptionLine, costLine); var encodedLine = PosPrint(line, "\n"); data.Append(encodedLine); } //20171219 - added stained item count to tax invoice slip - maanie if (item.ItemCountStain != 0) { double cost = (double)item.ItemCountStain * item.Cost.Value / 100.0; //double cost = (double)item.Cost.Value / 100.0; //cost = (double)1 * 0.123456789 / 100.0; subTotal += cost; var descriptionLine = string.Format(" {0} Stained x {1}", item.ItemCountStain, item.Size); var costLine = string.Format("R {0}", cost.ToString("F")); // 10-11-2016 - adding rounding back - maanie //var costLine = string.Format("R {0}", (Math.Truncate(cost * 100) / 100).ToString("F2")); // 08-11-2016 - truncate instead of round - maanie var line = Justify(posPrinter.RecLineChars, descriptionLine, costLine); var encodedLine = PosPrint(line, "\n"); data.Append(encodedLine); } //Added condemned items to invoice with zero charge - 2016/05/23 - maanie if (item.BadCount != 0) { if ((item.BadCount - item.CondemnedPrinted) > 0) { var cost = 0.00; subTotal += cost; var descriptionLine = string.Format(" {0} Condemned x {1}", item.BadCount, item.Size); var costLine = string.Format("R {0}", cost.ToString("F")); var line = Justify(posPrinter.RecLineChars, descriptionLine, costLine); var encodedLine = PosPrint(line, "\n"); data.Append(encodedLine); } } lastItemType = item.ItemType; lastCategory = item.Category; } //20180326 - use DB setting for VAT - maanie double vatAmount = 0.0; var setting = db.Settings.FirstOrDefault(s => s.SettingName == "VAT Amount"); if (setting == null) vatAmount = 0.14; //set to 0.14 if no vat setting found else vatAmount = Convert.ToDouble(setting.SettingValue); var vat = subTotal * vatAmount; //0.14; //Math.Truncate((subTotal * 0.14) * 100) / 100; // 08-11-2016 - truncate instead of round - maanie // 10-11-2016 - adding rounding back - maanie var total = subTotal + vat; data.Append(PosPrint("|300uF|bC", Justify(posPrinter.RecLineChars, "SUB TOTAL", string.Format("R {0}", subTotal.ToString("F"))), "\n")); data.Append(PosPrint("|uC", Justify(posPrinter.RecLineChars, "+ VAT (" + vatAmount.ToString().Substring(vatAmount.ToString().IndexOf(".") + 1) + "%)", string.Format("R {0}", vat.ToString("F"))), "\n|N")); data.Append(PosPrint("|100uF|bC|2C", Justify(posPrinter.RecLineChars / 2, "TOTAL", string.Format("R {0}", total.ToString("F"))), "\n|N|500uF")); if (inventory.Count(i1 => i1.Category == "Laundry") > 0) { double laundrySubTotal = (double) inventory.Where(i => i.Category == "Laundry").Sum(result => (result.ItemCount * result.Cost.Value / 100.0)); laundrySubTotal += (double)inventory.Where(i => i.Category == "Laundry").Sum(result => (result.ItemCountStain * result.Cost.Value / 100.0)); //20171219 - added stained item count to tax invoice slip - maanie double laundryTotal = laundrySubTotal + (laundrySubTotal * vatAmount); //0.14); //20180326 - use DB setting for VAT - maanie data.Append(PosPrint(Justify(posPrinter.RecLineChars, "Laundry", string.Format("R {0}", laundryTotal.ToString("F"))), "\n")); } if (inventory.Count(i1 => i1.Category == "Linen") > 0) { double linenSubTotal = (double) inventory.Where(i => i.Category == "Linen").Sum(result => (result.ItemCount * result.Cost.Value / 100.0)); linenSubTotal += (double)inventory.Where(i => i.Category == "Linen").Sum(result => (result.ItemCountStain * result.Cost.Value / 100.0)); //20171219 - added stained item count to tax invoice slip - maanie double linenTotal = linenSubTotal + (linenSubTotal * vatAmount); //0.14); //20180326 - use DB setting for VAT - maanie data.Append(PosPrint(Justify(posPrinter.RecLineChars, "Linen", string.Format("R {0}", linenTotal.ToString("F"))), "\n")); } if (inventory.Count(i1 => i1.Category == "Food and Bev") > 0) { double fnbSubTotal = (double) inventory.Where(i => i.Category == "Food and Bev").Sum(result => (result.ItemCount * result.Cost.Value / 100.0)); fnbSubTotal += (double)inventory.Where(i => i.Category == "Food and Bev").Sum(result => (result.ItemCountStain * result.Cost.Value / 100.0)); //20171219 - added stained item count to tax invoice slip - maanie double fnbTotal = fnbSubTotal + (fnbSubTotal * vatAmount); //0.14); //20180326 - use DB setting for VAT - maanie data.Append(PosPrint(Justify(posPrinter.RecLineChars, "Food and Bev", string.Format("R {0}", fnbTotal.ToString("F"))), "\n")); } data.Append(PosPrint("|500uF")); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Transaction); posPrinter.PrintNormal(PrinterStation.Receipt, data.ToString()); posPrinter.PrintBarCode(PrinterStation.Receipt, BarcodeGenerator.BarcodeValue(BarcodeGenerator.BarCodeType.Invoice, deliveryId).ToString(), BarCodeSymbology.Code39, 1000, posPrinter.RecLineWidth, PosPrinter.PrinterBarCodeCenter, BarCodeTextPosition.Below); posPrinter.PrintNormal(PrinterStation.Receipt, PosPrint("|fP")); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Normal); } catch (PosControlException) { } } } //20171219 - added stained item count to print dispatch slip - maanie public static void PrintDispatch(PosPrinter posPrinter, int dispatchId) { var data = new StringBuilder(); using (var db = new DataModel()) { var dispatch = db.Dispatches.FirstOrDefault(d => d.DispatchId == dispatchId); if (dispatch == null) return; var invoice = db.vwInvoicesReadyToPrints.FirstOrDefault(f => f.Id == dispatchId && f.CustomerId == dispatch.Invoice.CustomerId); var invoiceId = invoice == null ? dispatch.InvoiceId : invoice.InvoiceId; var invoiceDate = invoice == null ? dispatch.Invoice.Workload.DateCreated : invoice.DateCreated; try { data.Append(Header(posPrinter, false, dispatch.Invoice.Customer.CompanyID)); data.Append(PosPrint("|4C", dispatch.Invoice.Customer.Name, "\n", "|N")); if (!string.IsNullOrEmpty(dispatch.Invoice.Customer.AddressLine1)) data.Append(PosPrint(dispatch.Invoice.Customer.AddressLine1, "\n")); if (!string.IsNullOrEmpty(dispatch.Invoice.Customer.AddressLine2)) data.Append(PosPrint(dispatch.Invoice.Customer.AddressLine2, "\n")); if (!string.IsNullOrEmpty(dispatch.Invoice.Customer.AddressCity)) data.Append(PosPrint(dispatch.Invoice.Customer.AddressCity, "\n")); if (!string.IsNullOrEmpty(dispatch.Invoice.Customer.AddressPostCode)) data.Append(PosPrint(dispatch.Invoice.Customer.AddressPostCode, "\n")); data.Append(PosPrint("|200uF")); data.Append(PosPrint("|500uF")); data.Append(PosPrint("|2C|cA", "BAG", "\n", "|N")); // Remove Pastel code from bag seal display data.Append(PosPrint("|2C|cA", dispatch.BagSeal.ToString(), "\n", "|N")); data.Append(PosPrint("|200uF")); var reference = dispatch.Invoice.Workload.Reference; var workloadId = dispatch.Invoice.WorkloadId; var workorderId = string.IsNullOrEmpty(reference) ? workloadId.ToString() : reference; //20180119 - Added user who did the Pickup next to the Pre-list number - maanie var operatorAuthoriseId = dispatch.Invoice.Workload.OperatorAuthoriseId; var pickupOperator = db.OperatorLogins.Where(o => o.OperatorLoginId == operatorAuthoriseId).Select(s => s.Username).FirstOrDefault(); data.Append(PosPrint("|200uF")); //20181109 - increased font size of Prelist number - maanie data.Append(PosPrint("|300uF|bC", "Prelist No: ")); data.Append(PosPrint("|2C|cA", workorderId)); data.Append(PosPrint("|300uF|bC", string.Format(" / {0}", pickupOperator), "\n", "|N")); //data.Append(PosPrint("|300uF|bC", string.Format("Prelist No: {0} / {1}", workorderId, pickupOperator), "\n", "|N")); data.Append(PosPrint("|300uF|bC", invoiceDate.ToString(), "\n", "|N")); long lastBagNumber = 0; var total = 0; var packages = db.vwDispatchBagPackageContents.Where(dp => dp.DispatchId == dispatchId).OrderBy(o1 => o1.BagNumber).ThenBy(o2 => o2.Category_OrderPriority).ThenBy(o3 => o3.ItemType).ThenBy(o4 => o4.Size_OrderPriority).ToList(); foreach (var package in packages) { //var bagNumber = package.BagNumber.Value; //var itemCount = package.ItemCount.Value; //var itemType = package.ItemType; //var size = package.Size; //total += itemCount; //if (bagNumber != lastBagNumber) data.Append(PosPrint("|2C", "Package # ", bagNumber.ToString("N0"), "\n|N")); //data.Append(PosPrint(" ", itemCount.ToString("N0"), " x ", size, " ", itemType, "\n")); //lastBagNumber = bagNumber; var packageStain = db.Packages.FirstOrDefault(p => p.PackageId == package.PackageId); var bagNumber = package.BagNumber.Value; var itemCount = package.ItemCount.Value; var ItemCountStain = (int) packageStain.ItemCountStain; var itemType = package.ItemType; var size = package.Size; if (bagNumber != lastBagNumber) data.Append(PosPrint("|2C", "Package # ", bagNumber.ToString("N0"), "\n|N")); if (itemCount > 0) { total += itemCount; data.Append(PosPrint(" ", itemCount.ToString("N0"), " x ", size, " ", itemType, "\n")); } if (ItemCountStain > 0) { //data.Append(PosPrint(" ", "STAINED ITEMS", "\n")); total += ItemCountStain; data.Append(PosPrint(" ", ItemCountStain.ToString("N0"), " stained x ", size, " ", itemType, "\n")); } lastBagNumber = bagNumber; } data.Append(PosPrint("|4C", Justify(posPrinter.RecLineChars / 2, "Total Items", total.ToString("N0")), "\n")); data.Append(PosPrint("|500uF")); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Transaction); posPrinter.PrintNormal(PrinterStation.Receipt, data.ToString()); //20250318 - Modified barcode value to include customer Pastel code as prefix var barcodeValue = string.IsNullOrEmpty(dispatch.Invoice.Customer.PastelCode) ? dispatch.BagSeal.ToString() : $"{dispatch.Invoice.Customer.PastelCode}-{dispatch.BagSeal}"; posPrinter.PrintBarCode(PrinterStation.Receipt, barcodeValue, BarCodeSymbology.Code39, 1000, posPrinter.RecLineWidth, PosPrinter.PrinterBarCodeLeft, BarCodeTextPosition.Below); posPrinter.PrintNormal(PrinterStation.Receipt, PosPrint("|fP")); posPrinter.TransactionPrint(PrinterStation.Receipt, PrinterTransactionControl.Normal); } catch (PosControlException) { } catch (Exception) { } } } private static string Header(PosPrinter posPrinter, bool printLogo, int? companyID) { var header = new StringBuilder(); using (var db = new DataModel()) { // get the company details var company = db.Companies.Where(x => x.CompanyID == companyID).FirstOrDefault(); if (company.CompanyID == 1) { //if (posPrinter.CapRecBitmap != true) return; var directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); //if (directoryName == null) return; var logoPath = string.Format("{0}\\printerLogo.bmp", directoryName.Substring(6)); Properties.Resources.PrinterLogo.Save(logoPath); for (var retryCount = 0; retryCount < 5; retryCount++) { try { posPrinter.SetBitmap(1, PrinterStation.Receipt, logoPath, posPrinter.RecLineWidth / 2, PosPrinter.PrinterBitmapCenter); break; } catch (PosControlException pce) { if (pce.ErrorCode == ErrorCode.Failure && pce.ErrorCodeExtended == 0 && pce.Message == "It is not initialized.") System.Threading.Thread.Sleep(1000); } } } else if (company.CompanyID == 2) { //if (posPrinter.CapRecBitmap != true) return; var directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); //if (directoryName == null) return; var logoPath = string.Format("{0}\\TexcarePrinterLogo.bmp", directoryName.Substring(6)); Properties.Resources.TexcarePrinterLogo.Save(logoPath); for (var retryCount = 0; retryCount < 5; retryCount++) { try { posPrinter.SetBitmap(1, PrinterStation.Receipt, logoPath, posPrinter.RecLineWidth / 2, PosPrinter.PrinterBitmapCenter); break; } catch (PosControlException pce) { if (pce.ErrorCode == ErrorCode.Failure && pce.ErrorCodeExtended == 0 && pce.Message == "It is not initialized.") System.Threading.Thread.Sleep(1000); } } } if (printLogo) header.Append(PosPrint("|1B")); //header.Append(PosPrint("|bC|3C", Settings.CompanyName, "\n")); //header.Append(PosPrint("|N", Settings.CompanyAddress, "\n")); //header.Append(PosPrint(Settings.CompanyPhone, "\n")); //header.Append(PosPrint("Email: ", Settings.CompanyEmail, "\n")); //header.Append(PosPrint("VAT no: ", Settings.CompanyVatNumber, "\n")); //header.Append(PosPrint(DateTime.Now.ToString("dd/MMMM/yyyy HH:mm", new DateTimeFormatInfo { MonthDayPattern = "MMMM" }), "\n")); //header.Append(PosPrint("|500uF")); header.Append(PosPrint("|bC|3C", company.CompanyName, "\n")); header.Append(PosPrint("|N", company.CompanyAddress, "\n")); header.Append(PosPrint(company.CompanyPhone, "\n")); header.Append(PosPrint("Email: ", company.CompanyEmail, "\n")); header.Append(PosPrint("VAT no: ", company.CompanyVATNumber, "\n")); header.Append(PosPrint(DateTime.Now.ToString("dd/MMMM/yyyy HH:mm", new DateTimeFormatInfo { MonthDayPattern = "MMMM" }), "\n")); return header.ToString(); } } } }