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();
          }

      }