public void PrinterOrderReceipt(MainOrder order) { Log(string.Format("printing order id={0}", order.Id)); var printer = new FiscalPrinterUtility(comPort, comSpeed); if (!FiscalPrinterHelper._isConnected) { printer.ConnectFiscalPrinter(); } if (printer.OpenFiscalPrinter()) { int casesQuantity = 0; double calculatedTotal = 0.0; decimal cumulativeTotal = 0m; int pricePrecision = 0; int quantityPrecision = 0; foreach (var item in order.ItemSummary) { var vat = item.VatValue; string hasVAT = vat> 0 ? "A" : "B"; if (item.Product.ReturnableType == ReturnableType.Returnable && item.Value==0) { continue; } double price = (double)Math.Truncate((item.Value + vat)*100) / 100; var pricecheck = (item.Value + vat).GetTruncatedValue(); cumulativeTotal += Convert.ToDecimal((item.Value + vat) * (int)item.Qty); var bulkQuantity = 0.0m; var calulationPrice = 0.0; using (var container = ObjectFactory.Container.GetNestedContainer()) { var summaryService = container.GetInstance<IProductPackagingSummaryService>(); bulkQuantity = summaryService.GetProductQuantityInBulk(item.Product.Id); var modulo = item.Qty%bulkQuantity; if (modulo != 0) { casesQuantity =(int) item.Qty; calulationPrice = (double) ((pricecheck)); } else { casesQuantity = (int)item.Qty / (int)bulkQuantity; calulationPrice = (double)(pricecheck).GetTruncatedValue(); calulationPrice = (double)((decimal)(calulationPrice * (double)bulkQuantity)).GetTotalGross(); } } double price2 =(double) (item.Value + vat+item.ProductDiscount); int quantity = (int)item.Qty; var line1 = item.Product.ProductCode.Trim(); var line2 = item.Product.Description.Trim(); printer.Sell(line1, line2, hasVAT.Trim(), calulationPrice, pricePrecision, casesQuantity, quantityPrecision); calculatedTotal += quantity * price; } var paidAmount = order.GetPayments.Sum(n => n.Amount); var expectedPayment = order.TotalGross; int subtotal, sumA, sumB, sumC, sumD, sumE, sumF, sumG, sumH; double salediscountValue = Convert.ToDouble(order.SaleDiscount); printer.SaleDiscount(1, 0, -salediscountValue, out subtotal, out sumA, out sumB, out sumC, out sumD, out sumE, out sumF, out sumG, out sumH); cumulativeTotal = cumulativeTotal.GetTotalGross(); cumulativeTotal = (cumulativeTotal - order.SaleDiscount).GetTotalGross(); var value = paidAmount; printer.GetTotalQ((double)value); printer.CloseFiscalPrinter(); } }
public static void Reinitialize(int port,int comSpeed) { var fiscalPrinter = new FiscalPrinterUtility(port, comSpeed); fiscalPrinter.ConnectFiscalPrinter(); }
public void PrintNonFiscalOrderReceipt(MainOrder order) { Log(string.Format("printing non fiscal order id={0}", order.Id)); var printer = new FiscalPrinterUtility(comPort, comSpeed); if (!FiscalPrinterHelper._isConnected) { printer.ConnectFiscalPrinter(); } if (printer.OpenNonFiscalPrinter()) { int casesQuantity = 0; var spaces = string.Empty; foreach (var item in order.ItemSummary) { if (item.Product.ReturnableType == ReturnableType.Returnable &&item.Value==0) { continue; } double price = (double)Math.Truncate((item.Value + item.VatValue) * 100) / 100; var pricecheck = (item.Value + item.VatValue).GetTruncatedValue(); var bulkQuantity = 0.0m; var calculationPrice = 0.0; using (var container = ObjectFactory.Container.GetNestedContainer()) { var summaryService = container.GetInstance<IProductPackagingSummaryService>(); bulkQuantity = summaryService.GetProductQuantityInBulk(item.Product.Id); var modulo = item.Qty % bulkQuantity; if (modulo != 0) { casesQuantity = (int)item.Qty; calculationPrice = (double)((pricecheck)); } else { casesQuantity = (int)item.Qty / (int)bulkQuantity; calculationPrice = (double)(pricecheck).GetTruncatedValue(); calculationPrice = (double)((decimal)(calculationPrice * (double)bulkQuantity)).GetTotalGross(); } } spaces = GenerateSpaces("\t", item.Product.ProductCode, casesQuantity + " x " + calculationPrice.ToString("0.00"), 48); FP2000KL.CMD_42_0_0(item.Product.ProductCode + spaces + casesQuantity + " x " + calculationPrice.ToString("0.00")); var total = casesQuantity * calculationPrice; spaces = GenerateSpaces("\t", item.Product.Description, total.ToString("0.00"), 48); FP2000KL.CMD_42_0_0(item.Product.Description + spaces + total.ToString("0.00")); } if (order.SaleDiscount > 0) { spaces = GenerateSpaces("\t", "Discount", order.SaleDiscount.ToString("0.00"), 48); FP2000KL.CMD_42_0_0("Discount" + spaces + order.SaleDiscount.ToString("0.00")); } var paidAmount = order.GetPayments.Sum(n => n.Amount); var expectedPayment =order.SaleDiscount>0?(order.TotalGross.GetTotalGross()-order.SaleDiscount):order.TotalGross; var amountDue = paidAmount >= expectedPayment ? paidAmount : expectedPayment.GetTotalGross(); var amountPaid = paidAmount; spaces = GenerateSpaces("-", string.Empty, string.Empty, 48); FP2000KL.CMD_42_0_0(spaces); spaces = GenerateSpaces("\t", "Total", amountDue.ToString("0.00"), 48); FP2000KL.CMD_42_0_0("Total" + spaces + amountDue.ToString("0.00")); spaces = GenerateSpaces("\t", "Paid", amountPaid.ToString("0.00"), 48); FP2000KL.CMD_42_0_0("Paid" + spaces + amountPaid.ToString("0.00")); FP2000KL.CMD_42_0_0("\n"); FP2000KL.CMD_42_0_0("\n"); printer.CloseNonFiscalPrinter(); } }