Esempio n. 1
0
        public void SwitchToThankYou()
        {
            ExecutionEngine.EventLogger.Write("ProcessOrderStage:SwitchToThankYou");
            LastVisitedPage = _thankYouScreen;

            if (ExecutionEngine.Config.EnableReceiptPrinter.Value && ExecutionEngine.Instance.PrimaryAction != PrimaryActionType.ProcessOrder)
            {
                try
                {
                    var receiptData = new ReceiptData();
                    receiptData.Id          = CurrentOrder.OrderId;
                    receiptData.UserName    = CurrentOrder.UserName;
                    receiptData.UserPhone   = CurrentOrder.UserPhone;
                    receiptData.OrderPhotos = true;
                    receiptData.BurnCd      = false;

                    if (ExecutionEngine.Instance.PrimaryAction == PrimaryActionType.BurnCd)
                    {
                        receiptData.Service     = ExecutionEngine.Instance.Resource[Constants.OrderInfoControlCdBurningTextKey].ToString();
                        receiptData.OrderPhotos = false;
                        receiptData.BurnCd      = true;
                    }

                    receiptData.CropMode = Constants.CropToFillModeName == CurrentOrder.CropMode ?
                                           ExecutionEngine.Instance.Resource[Constants.CropToFillTextKey].ToString() :
                                           ExecutionEngine.Instance.Resource[Constants.ResizeToFitTextKey].ToString();
                    receiptData.PaperType   = CurrentOrder.OrderPaperType.Name;
                    receiptData.OrderDate   = DateTime.Now.ToString(CultureInfo.CurrentCulture);
                    receiptData.PhotosCount = CurrentOrder.OrderItems.Count;
                    receiptData.PrintsCount = CurrentOrder.GetItemCount();
                    receiptData.OrderCost   = CurrentOrder.GetTotalCost().ToString("c", NumberFormatInfo.CurrentInfo);
                    if (ExecutionEngine.PriceManager.SalesTaxPercent.Value > 0)
                    {
                        string taxString = string.Format("{0} ({1}%)", (CurrentOrder.GetTotalCost() * ExecutionEngine.PriceManager.SalesTaxPercent.Value).ToString("c", CultureInfo.CurrentCulture), ExecutionEngine.PriceManager.SalesTaxPercent.Value * 100);
                        if (!string.IsNullOrEmpty(ExecutionEngine.PriceManager.SalesTaxComment.Value))
                        {
                            taxString += " " + ExecutionEngine.PriceManager.SalesTaxComment.Value;
                        }
                        receiptData.SalesTax  = taxString;
                        receiptData.TotalCost = (CurrentOrder.GetTotalCost() * (1 + ExecutionEngine.PriceManager.SalesTaxPercent.Value)).ToString("c", NumberFormatInfo.CurrentInfo);
                    }

                    foreach (PaperFormat format in ExecutionEngine.Instance.PaperFormats)
                    {
                        if (CurrentOrder.GetItemCount(format) > 0)
                        {
                            receiptData.Formats.Add(new FormatInfo(format.Name, CurrentOrder.GetItemCount(format)));
                        }
                    }

                    int maxPhotosCount = Math.Min(CurrentOrder.OrderItems.Count, ExecutionEngine.Config.PhotosInReceipt.Value);
                    for (int i = 0; i < maxPhotosCount; i++)
                    {
                        foreach (PaperFormat format in ExecutionEngine.Instance.PaperFormats)
                        {
                            if (CurrentOrder.OrderItems[i].GetCount(format) > 0)
                            {
                                receiptData.Photos.Add(new PhotoInfo(CurrentOrder.OrderItems[i].OrderStoreFileName, CurrentOrder.OrderItems[i].GetCount(format), format.Name));
                            }
                        }
                    }
                    receiptData.MorePhotos = (maxPhotosCount < CurrentOrder.OrderItems.Count);

                    if (ExecutionEngine.Instance.PrimaryAction == PrimaryActionType.OrderPhotos)
                    {
                        foreach (Service service in CurrentOrder.Services)
                        {
                            string servicePrice;

                            if (service.IsPriceFixed)
                            {
                                servicePrice = service.GetPriceString();
                            }
                            else
                            {
                                servicePrice = (CurrentOrder.GetTotalCost() * service.Price / 100.0f).ToString("c", CultureInfo.CurrentCulture) + " (" + service.GetPriceString() + ")";
                            }

                            receiptData.Services.Add(new ServiceInfo(service.Name, servicePrice));
                        }
                    }

                    var receipt = new Receipt(receiptData, ExecutionEngine.Config.ReceiptTemplateFile.Value);
                    receipt.Print(ExecutionEngine.Config.ReceiptPrinterName.Value);
                }
                catch (System.Exception e)
                {
                    ExecutionEngine.ErrorLogger.WriteExceptionInfo(e);
                    MessageDialog.Show(StringResources.GetString("MessageReceiptPrinterError"));
                }
            }

            if (ExecutionEngine.Instance.PrimaryAction == PrimaryActionType.OrderPhotos)
            {
                ExecutionEngine.Instance.OrderManager.AddOrder(_orderStoreManager.CurrentOrderPath);
            }

            EnableTimeout();
            Engine.ExecuteCommand(new SwitchToScreenCommand(_thankYouScreen));
        }