Пример #1
0
        public static void AddPosition(string code, string number)
        {
            var info = WareHouseDBController.Find(code);

            if (info.Any())
            {
                var amount = number.Length != 0
                    ? double.Parse(number, CultureInfo.InvariantCulture)
                    : 1;
                var item = new CheckLine(new ProductData(info), amount);
                var availablePosition = ItemsPositions.Where(x => (x as CheckLine).Data.EAN13 == code);
                if (availablePosition.Any())
                {
                    (availablePosition.FirstOrDefault() as CheckLine).Amount += amount;
                }
                else
                {
                    ItemsPositions.Add(item);
                }
            }
            else
            {
                MessageBox.Show(String.Format(LanguageEngine.Language["FastInvoiceActivity AddPositionErrorMessageBox"], code),
                                LanguageEngine.Language["FastInvoiceActivity AddPositionErrorMessageBoxTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Пример #2
0
        public static void AddUserPosition(string infoStr)
        {
            var usersInfo = UserDBController.FindLike(infoStr);

            if (usersInfo.Any())
            {
                foreach (var userInfo in usersInfo)
                {
                    var currentUser = new User(userInfo);
                    if (!(ItemsPositions
                          .Select(x => (x as User))
                          .Where(x => x.Name == currentUser.Name || x.Id == currentUser.Id)
                          .Any()))
                    {
                        ItemsPositions.Add(currentUser);
                    }
                    else if (usersInfo.Count == 1)
                    {
                        MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity AlreadyExist"],
                                        LanguageEngine.Language["UserControlServiceActivity AlreadyExistTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            }
            else
            {
                MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity NotFound"],
                                LanguageEngine.Language["UserControlServiceActivity NotFoundTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Пример #3
0
        public static void ExportOnClick(DateTime from, DateTime to)
        {
            Stream         stream;
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter           = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
            saveFileDialog.FilterIndex      = 1;
            saveFileDialog.FileName         = $"Export {DateTime.Now.ToString().Replace(':', '-')}";
            saveFileDialog.RestoreDirectory = true;

            if (saveFileDialog.ShowDialog() == true)
            {
                // ReSharper disable once ConditionIsAlwaysTrueOrFalse
                if ((stream = saveFileDialog.OpenFile()) != null)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine($"{LanguageEngine.Language["StatisticsActivity From"]};{from.ToString(CultureInfo.CurrentCulture)};" +
                                  $"{LanguageEngine.Language["StatisticsActivity To"]};{to.ToString(CultureInfo.CurrentCulture)}");
                    sb.AppendLine(LanguageEngine.Language["StatisticsActivity Titles"]);
                    foreach (var pos in ItemsPositions.OfType <EmployeeStatistic>())
                    {
                        sb.AppendLine($"{pos.CashierName};{pos.Invoices};{pos.Average};{pos.Total}");
                    }
                    byte[] data = Encoding.Default.GetBytes(sb.ToString());
                    stream.Write(data, 0, data.Length);
                    stream.Close();
                }
            }
        }
Пример #4
0
 public static void AmountOnClick(string number, int selectedIndex)
 {
     if (selectedIndex == -1)
     {
         return;
     }
     if (number.Length == 0)
     {
         (ItemsPositions[selectedIndex] as CheckLine).Amount++;
     }
     else
     {
         double amount = double.Parse(number, CultureInfo.InvariantCulture);
         string units  = (ItemsPositions[selectedIndex] as CheckLine).Data.Units;
         if (amount <= 0)
         {
             ItemsPositions.RemoveAt(selectedIndex);
         }
         else if ((ItemsPositions[selectedIndex] as CheckLine).Amount < amount)
         {
             (ItemsPositions[selectedIndex] as CheckLine).Amount = units == "шт."
                 ? Math.Round(amount, mode: MidpointRounding.AwayFromZero)
                 : amount;
         }
         else if (MessageBox.Show(LanguageEngine.Language["FastInvoiceActivity Decreasing"],
                                  LanguageEngine.Language["FastInvoiceActivity DecreasingTitle"], MessageBoxButton.YesNo,
                                  MessageBoxImage.Exclamation) == MessageBoxResult.Yes)
         {
             (ItemsPositions[selectedIndex] as CheckLine).Amount = units == "шт."
                 ? Math.Round(amount, mode: MidpointRounding.AwayFromZero)
                 : amount;
         }
     }
 }
Пример #5
0
 public static void AddPositionForSaving(string code)
 {
     if (code.Length == 13)
     {
         var availablePosition = ItemsPositions.Where(x => (x as DBProductData).Data.EAN13 == code);
         if (availablePosition.Any())
         {
             MessageBox.Show(String.Format(LanguageEngine.Language["WareHouseActivity PositionContainsQuestion"], code),
                             LanguageEngine.Language["WareHouseActivity PositionContainsQuestionTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
         }
         else
         {
             var info = WareHouseDBController.Find(code);
             if (!info.Any())
             {
                 ItemsPositions.Add(new DBProductData(new ProductData(code), false));
             }
             else if (MessageBox.Show(String.Format(LanguageEngine.Language["WareHouseActivity ContainsQuestion"], code),
                                      LanguageEngine.Language["WareHouseActivity ContainsQuestionTitle"], MessageBoxButton.YesNo,
                                      MessageBoxImage.Question) == MessageBoxResult.Yes)
             {
                 if (!ItemsPositions.Where(x => (x as DBProductData).Data.EAN13 == code).Any())
                 {
                     ItemsPositions.Add(new DBProductData(new ProductData(info), true));
                 }
             }
         }
     }
     else
     {
         MessageBox.Show(LanguageEngine.Language["WareHouseActivity EAN13FormatError"],
                         LanguageEngine.Language["WareHouseActivity EAN13FormatErrorTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
     }
 }
Пример #6
0
        public static void UpdateUser(User user, string password)
        {
            UserDBController.Update(user, GetHash(password));
            var oldUser = ItemsPositions.FirstOrDefault(x => (x as User).Id == user.Id);

            ItemsPositions[ItemsPositions.IndexOf(oldUser)] = user;
            if (user.Id == CurrentUser.Id)
            {
                CurrentUser = user;
            }
        }
Пример #7
0
        public static bool AddNewUser(User newUser, string password)
        {
            var newUserHash = GetHash(password);

            try
            {
                UserDBController.Add(newUser.Id, newUser.Name, newUser.AccessLevel, newUserHash);
            }
            catch (System.Data.SQLite.SQLiteException)
            {
                return(false);
            }
            ItemsPositions.Add(newUser);
            return(true);
        }
Пример #8
0
        private static void FillEmployeeStatistic(string cashierName, long fromTime, long toTime)
        {
            List <Invoice> data = new List <Invoice>();
            var            info = DBController.SQLNonVoidCommand(
                $"SELECT Data FROM documents WHERE CashierName='{cashierName}' AND DateTime BETWEEN {fromTime} AND {toTime}");
            var jsons = info.Select(x => x.First()).ToList();

            foreach (var json in jsons)
            {
                data.Add(JsonConvert.DeserializeObject <Invoice>(json));
            }
            if (data.Count != 0)
            {
                ItemsPositions.Add(new EmployeeStatistic(data));
            }
        }
Пример #9
0
        public static void ProceedPayment(Invoice invoice)
        {
            var currentUserName = CurrentUser.Name;
            var jsonStr         = JsonConvert.SerializeObject(invoice);

            PrintInvoice.Print(invoice);
            DocumentsDBController.Add(
                (int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                currentUserName,
                jsonStr);
            foreach (CheckLine position in invoice.Positions)
            {
                WareHouseDBController.DecreaseAmountBy(position.Data.EAN13, position.Amount);
            }
            ItemsPositions.Clear();
        }
Пример #10
0
 public static void AddStatisticsPositions(string name, long fromTime, long toTime)
 {
     ItemsPositions.Clear();
     if (name == LanguageEngine.Language["StatisticsActivity All"])
     {
         foreach (var user in GetUsersList())
         {
             FillEmployeeStatistic(user, fromTime, toTime);
         }
         ItemsPositions.Add(new EmployeeStatistic(
                                LanguageEngine.Language["StatisticsActivity Total"],
                                ItemsPositions.Select(x => ((EmployeeStatistic)x).Invoices).Sum(),
                                ItemsPositions.Select(x => ((EmployeeStatistic)x).Total).Sum()));
     }
     else
     {
         FillEmployeeStatistic(name, fromTime, toTime);
     }
 }
Пример #11
0
 public static void DeleteFromDB(int selectedIndex)
 {
     if (ItemsPositions.Count == 0)
     {
         MessageBox.Show(LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingError"],
                         LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingErrorTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
     }
     else if (selectedIndex == -1)
     {
         if (MessageBox.Show(LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingPositions"],
                             LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingPositionsTitle"], MessageBoxButton.YesNo,
                             MessageBoxImage.Warning) == MessageBoxResult.Yes)
         {
             foreach (DBProductData position in ItemsPositions)
             {
                 if (position.IsInDB)
                 {
                     WareHouseDBController.Remove(position.Data.EAN13);
                 }
             }
             ItemsPositions.Clear();
         }
     }
     else
     {
         if ((ItemsPositions[selectedIndex] as DBProductData).IsInDB)
         {
             if (MessageBox.Show(LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingPosition"],
                                 LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingPositionTitle"], MessageBoxButton.YesNo,
                                 MessageBoxImage.Warning) == MessageBoxResult.Yes)
             {
                 var code = (ItemsPositions[selectedIndex] as DBProductData).Data.EAN13;
                 WareHouseDBController.Remove(code);
                 ItemsPositions.RemoveAt(selectedIndex);
             }
         }
         else
         {
             MessageBox.Show(LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingNotInDB"],
                             LanguageEngine.Language["WareHouseActivity DeleteFromDB DeletingNotInDBTitle"], MessageBoxButton.OK, MessageBoxImage.Information);
         }
     }
 }
Пример #12
0
 public static void DeleteUserFromDB(int selectedIndex)
 {
     if (ItemsPositions.Count == 0)
     {
         MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity NothingToRemove"],
                         LanguageEngine.Language["UserControlServiceActivity NothingToRemoveTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
     }
     else if (ItemsPositions.Select(x => (x as User).Id).Contains(CurrentUser.Id))
     {
         MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity SelfRemoveDisallowed"],
                         LanguageEngine.Language["UserControlServiceActivity SelfRemoveDisallowedTitle"], MessageBoxButton.OK, MessageBoxImage.Error);
     }
     else if (selectedIndex == -1)
     {
         if (MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity DeletingAll"],
                             LanguageEngine.Language["UserControlServiceActivity DeletingAllTitle"], MessageBoxButton.YesNo,
                             MessageBoxImage.Warning) == MessageBoxResult.Yes)
         {
             foreach (User user in ItemsPositions)
             {
                 UserDBController.Remove(user.Id);
             }
             ItemsPositions.Clear();
         }
     }
     else
     {
         if (MessageBox.Show(LanguageEngine.Language["UserControlServiceActivity ConfirmUserRemoving"],
                             LanguageEngine.Language["UserControlServiceActivity ConfirmUserRemovingTitle"], MessageBoxButton.YesNo,
                             MessageBoxImage.Warning) == MessageBoxResult.Yes)
         {
             var id = (ItemsPositions[selectedIndex] as User).Id;
             UserDBController.Remove(id);
             ItemsPositions.RemoveAt(selectedIndex);
         }
     }
 }