Example #1
0
        public IEnumerable <IResult> ReturnCheck()
        {
            if (checkType == CheckType.SaleBuyer)
            {
                Warning.Show(Common.Tools.Message.Warning($"При открытом документе продажи, возврат не возможен"));
                yield break;
            }
            var Checks = new Checks(true);

            yield return(new DialogResult(Checks, resizable: true));

            if (!Checks.DialogCancelled && Checks.CurrentItem != null)
            {
                if (((Check)Checks.CurrentItem).CheckType == CheckType.CheckReturn)
                {
                    Warning.Show(Common.Tools.Message.Warning($"По документу возврат, возврат не возможен"));
                    yield break;
                }
                checkType           = CheckType.CheckReturn;
                CheckLinesForReturn = Session.Query <CheckLine>()
                                      .Where(x => x.CheckId == ((Check)Checks.CurrentItem).Id)
                                      .Fetch(x => x.Stock)
                                      .ToList();

                foreach (var line in CheckLinesForReturn)
                {
                    var checkLine = new CheckLine(line.Stock, (uint)line.Quantity, CheckType.CheckReturn);
                    Lines.Add(checkLine);
                    CurrentLine.Value = checkLine;
                }
            }
        }
        public void Doc_Close()
        {
            //На складе есть Папаверин в количестве 5шт.
            Assert.AreEqual(stock.Quantity, 5);

            //добавляем строку на 3 упаковки
            var line = new CheckLine(stock, 3);

            model.Lines.Add(line);
            model.checkType = CheckType.SaleBuyer;
            // Оплата по чеку
            var result = model.Close().GetEnumerator();

            result.MoveNext();
            var dialog = ((Checkout)((DialogResult)result.Current).Model);

            dialog.Amount.Value = 10;
            result.MoveNext();

            // после оплаты на складе остается 2
            var check     = session.Query <Check>().First();
            var loadstock = session.Query <Stock>().Where(x => x.Id == stock.Id).First();

            Assert.AreEqual(loadstock.Quantity, 2);
            Assert.AreEqual(check.Sum, 3);
            Assert.AreEqual(check.Status, Status.Closed);
        }
Example #3
0
        // Распаковка Ctrl+U
        public IEnumerable <IResult> Unpack()
        {
            if (checkType == CheckType.CheckReturn)
            {
                Warning.Show(Common.Tools.Message.Warning($"Распаковка при возврате не возможена"));
                yield break;
            }
            var srcStock = CurrentLine.Value.Stock;

            if (srcStock == null)
            {
                Warning.Show(Common.Tools.Message.Warning($"Не определен товар для распаковки"));
                yield break;
            }
            if (srcStock.Unpacked)
            {
                yield break;
            }

            var inputQuantity = new InputQuantity((OrderedStock)srcStock);

            yield return(new DialogResult(inputQuantity, resizable: false));

            if (!inputQuantity.WasCancelled)
            {
                Lines.Remove(CurrentLine.Value);
                checkType = CheckType.SaleBuyer;
                var line = new CheckLine(inputQuantity.DstStock, inputQuantity.SrcStock, inputQuantity.DstStock.Value.Ordered.Value);
                Lines.Add(line);
                CurrentLine.Value = line;
            }
        }
Example #4
0
        public void Consumption_report()
        {
            var line = waybill.Lines[10];

            line.CatalogId = null;
            var stock = new Stock(waybill, line, session);

            session.Save(stock);
            Assert.AreEqual(stock.Product, line.Product);

            var check = new Check();

            check.Status = Status.Closed;
            session.Save(check);

            var checkLine = new CheckLine(stock, 1, CheckType.SaleBuyer);

            checkLine.CheckId = check.Id;
            session.Save(checkLine);
            session.Flush();

            var result = model.ConsumptionReport().GetEnumerator();
            var task   = Next <TaskResult>(result);

            task.Task.Start();
            task.Task.Wait();
            var open = Next <OpenResult>(result);

            Assert.IsTrue(File.Exists(open.Filename), open.Filename);
            Assert.That(open.Filename, Does.Contain("Расход по документу"));
        }
        public void Unpack()
        {
            stock = new OrderedStock()
            {
                Product          = "Папаверин",
                Status           = StockStatus.Available,
                Address          = address,
                RetailCost       = 1,
                Quantity         = 10,
                ReservedQuantity = 0,
                Barcode          = "10",
                ProductId        = 1,
                CatalogId        = 1,
                Exp = SystemTime.Now()
            };
            session.Save("AnalitF.Net.Client.Models.Inventory.Stock", stock);
            session.Flush();
            //добавляем строку на 3 упаковки
            var line = new CheckLine(stock, 3, CheckType.SaleBuyer);

            model.Lines.Add(line);
            model.CurrentLine.Value = line;

            var result = model.Unpack().GetEnumerator();

            result.MoveNext();
            var dialog = ((InputQuantity)((DialogResult)result.Current).Model);

            dialog.Quantity.Value     = 2;
            dialog.Multiplicity.Value = 6;
            dialog.OK();
            result.MoveNext();

            // из них две в чеке
            Assert.AreEqual(model.CurrentLine.Value.Quantity, 2);
            var dstStock = model.CurrentLine.Value.Stock;

            result = model.Close().GetEnumerator();
            result.MoveNext();
            var dialog1 = ((Checkout)((DialogResult)result.Current).Model);

            dialog1.Amount.Value = 10;
            result.MoveNext();

            session.Clear();
            var loadstock = session.Query <Stock>().Where(x => x.Id == dstStock.Id).First();

            Assert.AreEqual(loadstock.Quantity, 6 - 2);
            Assert.AreEqual(loadstock.Multiplicity, 6);
        }
        public void Step()
        {
            SubCheckLines.UnionWith(CheckLines);
            CheckLines.Clear();
            foreach (var CheckLine in SubCheckLines)
            {
                CheckLine.Step();
            }
            SubCheckLines.Clear();

            foreach (var CheckLoc in CheckLocations)
            {
                CheckLoc.Process();
            }
            CheckLocations.Clear();
        }
Example #7
0
        public void Step()
        {
            SubCheckLines.UnionWith(CheckLines);
            CheckLines.Clear();
            foreach (var CheckLine in SubCheckLines)
            {
                CheckLine.Step();
            }
            SubCheckLines.Clear();

            foreach (var explosionNode in CheckLocations.ToArray())
            {
                CheckLocations.Remove(explosionNode);                 //lets not create infinite explosions in the case of a runtime
                explosionNode.Process();
            }
        }
Example #8
0
        private void AddBarcodeProduct(BarcodeProducts item, uint quantity, decimal retailCost)
        {
            if (checkType == null)
            {
                checkType = CheckType.SaleBuyer;
            }
            var exists = Lines.FirstOrDefault(x => x.BarcodeProduct.Id == item.Id && x.RetailCost == retailCost);

            if (exists != null)
            {
                exists.Quantity += quantity;
            }
            else
            {
                var line = new CheckLine(item, quantity, retailCost);
                Lines.Add(line);
                CurrentLine.Value = line;
            }
        }
Example #9
0
        private void AddStock(Stock item)
        {
            if (checkType == null)
            {
                checkType = CheckType.SaleBuyer;
            }
            var exists = Lines.FirstOrDefault(x => x.Stock.Id == item.Id);

            if (exists != null)
            {
                exists.Quantity   = 1;
                CurrentLine.Value = exists;
            }
            else
            {
                var line = new CheckLine(item, 1);
                Lines.Add(line);
                CurrentLine.Value = line;
            }
        }
Example #10
0
        private void UpdateOrAddStock(OrderedStock item)
        {
            if (checkType == null)
            {
                checkType = CheckType.SaleBuyer;
            }
            var exists = Lines.FirstOrDefault(x => x.Stock.Id == item.Id);

            if (exists != null)
            {
                exists.Quantity   = item.Ordered.Value;
                CurrentLine.Value = exists;
            }
            else
            {
                var checkLine = new CheckLine(item, item.Ordered.Value);
                Lines.Add(checkLine);
                CurrentLine.Value = checkLine;
            }
        }
        public void CheckCurentCatalog()
        {
            var line = new CheckLine(stock, 3);

            model.CurrentLine.Value = line;
            model.Lines.Add(line);
            model.checkType = CheckType.SaleBuyer;
            scheduler.AdvanceByMs(2000);
            Assert.AreEqual(catalog.Id, model.CurrentCatalog.Value.Id);

            var CatalogChooser = new CatalogChooser("упа", stock.Address);

            scheduler.AdvanceByMs(2000);
            Assert.AreEqual(catalog.Id, CatalogChooser.CurrentCatalog.Value.Id);
            CatalogChooser.TryClose();

            var stockChooser = new StockChooser(catalog.Id, model.Lines, stock.Address);

            Assert.AreEqual(catalog.Id, stockChooser.CurrentCatalog.Value.Id);
            stockChooser.TryClose();
        }
Example #12
0
        //Проверка существования номера в базе
        public bool IsLPExist(string LP)
        {
            string CheckLine;

            string[] Parameters;
            using (FileStream FS = new FileStream(DirectoryPath, FileMode.Open))
            {
                using (StreamReader SR = new StreamReader(FS, Encoding.UTF8))
                {
                    while ((CheckLine = SR.ReadLine()) != null)
                    {
                        if (CheckLine.Contains(LP))
                        {
                            Parameters = CheckLine.Split(' ');
                            if (Parameters[0] == LP)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }
            return(false);
        }
Example #13
0
        static void Main(string[] args)
        {
            const int NumOfParameters = 5;

            //Проверка существования файла базы (вызывается в начале каждой функции)
            //Если файла по заданному пути не существует, создается новый пустой файл с именем Directory.txt
            void IsDBExist()
            {
                if (!File.Exists(DirectoryPath))
                {
                    var DirectoryFile = File.Create(DirectoryPath);
                    DirectoryFile.Close();
                    const string ValueForDataIfDirectoryFileDoNotExist = "";
                    File.AppendAllText(DirectoryPath, ValueForDataIfDirectoryFileDoNotExist);
                    Console.WriteLine("Предупреждение. Исходный файл не был найден, он был заменён на новый.");
                }
            }

            //Проверка существования номера в базе
            bool IsLPExist(string LP)
            {
                string CheckLine;

                string[] Parameters;
                using (FileStream FS = new FileStream(DirectoryPath, FileMode.Open))
                {
                    using (StreamReader SR = new StreamReader(FS, Encoding.UTF8))
                    {
                        while ((CheckLine = SR.ReadLine()) != null)
                        {
                            if (CheckLine.Contains(LP))
                            {
                                Parameters = CheckLine.Split(' ');
                                if (Parameters[0] == LP)
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                }
                return(false);
            }

            //Вывод списка
            void Output()
            {
                IsDBExist();
                string OutputLine;

                string[] OutputLineArray;
                Console.WriteLine("\nСписок автомобилей: \n");
                using (FileStream FS = new FileStream(DirectoryPath, FileMode.Open))
                {
                    using (StreamReader SR = new StreamReader(FS, Encoding.UTF8))
                    {
                        while ((OutputLine = SR.ReadLine()) != null)
                        {
                            OutputLineArray = OutputLine.Split(' ');
                            for (int i = 0; i < OutputLineArray.Count(); i++)
                            {
                                switch (i)
                                {
                                case 0:
                                    Console.Write("Гос. номер: ");
                                    break;

                                case 1:
                                    Console.Write("Марка: ");
                                    break;

                                case 2:
                                    Console.Write("Цвет: ");
                                    break;

                                case 3:
                                    Console.Write("Год выпуска: ");
                                    break;

                                case 4:
                                    Console.Write("Пробег(км): ");
                                    break;
                                }
                                Console.WriteLine(OutputLineArray[i]);
                            }
                        }
                    }
                }
            }//Вывод списка

            //Добавление автомобиля
            int AddCar(JToken json)
            {
                IsDBExist();
                string CheckLP = "";

                string[] a = new string[NumOfParameters];
                string   JSON;

                using (StreamReader SR = new StreamReader(jsonPath))
                {
                    JSON = SR.ReadToEnd();
                }
                dynamic array = JsonConvert.DeserializeObject(JSON);

                foreach (var item in array)
                {
                    CheckLP = item.LicensePlate;
                }

                //Проверка на существование номера в базе
                if (IsLPExist(CheckLP) == true)
                {
                    Console.WriteLine("Ошибка. Автомобиль с регистрационным знаком " + CheckLP + " уже существует.");
                    return(1);
                }

                //Проверка на правильный формат номера (данные регионов на 2020 год)
                //Обычный номер
                Regex NormalLP = new Regex(@"(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){1}\d{3}(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){2}(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|102|113|116|121|122|123|124|125|126|134|136|138|142|147|150|152|154|156|159|161|163|164|173|174|177|178|186|190|193|196|197|198|199|702|750|716|761|763|774|777|790|797|799){1}$");
                //Транзитный номер
                Regex TransitLP = new Regex(@"(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){2}\d{3}(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){1}(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|102|113|116|121|122|123|124|125|126|134|136|138|142|147|150|152|154|156|159|161|163|164|173|174|177|178|186|190|193|196|197|198|199|702|750|716|761|763|774|777|790|797|799){1}$");
                //Обычный номер с 000 (исключение)
                Regex ExceptionNormalLP = new Regex(@"(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){1}000(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){2}(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|102|113|116|121|122|123|124|125|126|134|136|138|142|147|150|152|154|156|159|161|163|164|173|174|177|178|186|190|193|196|197|198|199|702|750|716|761|763|774|777|790|797|799){1}$");
                //Транзитный номер с 000 (исключение)
                Regex ExceptionTransitLP = new Regex(@"(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){2}000(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){1}(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|102|113|116|121|122|123|124|125|126|134|136|138|142|147|150|152|154|156|159|161|163|164|173|174|177|178|186|190|193|196|197|198|199|702|750|716|761|763|774|777|790|797|799){1}$");

                MatchCollection MatchesNormalLP           = NormalLP.Matches(CheckLP);
                MatchCollection MatchesTransitLP          = TransitLP.Matches(CheckLP);
                MatchCollection MatchesExceptionNormalLP  = ExceptionNormalLP.Matches(CheckLP);
                MatchCollection MatchesExceptionTransitLP = ExceptionTransitLP.Matches(CheckLP);

                if (MatchesExceptionNormalLP.Count > 0)
                {
                    Console.WriteLine("Ошибка. Неверный формат номерного знака.");
                    return(1);
                }

                if (MatchesExceptionTransitLP.Count > 0)
                {
                    Console.WriteLine("Ошибка. Неверный формат номерного знака.");
                    return(1);
                }

                if ((MatchesNormalLP.Count > 0) || (MatchesTransitLP.Count > 0))
                {
                    foreach (var item in array)
                    {
                        a[0] = item.LicensePlate;
                        a[1] = item.Model;
                        a[2] = item.Colour;
                        a[3] = item.YearOfIssue;
                        a[4] = item.Kilometrage;
                    }
                    for (int i = 0; i < a.Count(); i++)
                    {
                        File.AppendAllText(DirectoryPath, a[i]);
                        File.AppendAllText(DirectoryPath, " ");
                    }
                    File.AppendAllText(DirectoryPath, "\n");
                    Console.WriteLine("Успешно. Автомобиль с регистрационным знаком " + CheckLP + " добавлен.");
                    return(0);
                }
                Console.WriteLine("Ошибка. Неверный формат номерного знака.");
                return(1);
            }//Добавление автомобиля

            //Удаление автомобиля
            int DeleteCar(JToken LP)
            {
                IsDBExist();

                //Проверка на существование номера в базе
                if (IsLPExist(System.Convert.ToString(LP)) == true)
                {
                    File.WriteAllLines(DirectoryPath, File.ReadAllLines(DirectoryPath).Where(v => v.Trim().IndexOf(System.Convert.ToString(LP)) == -1).ToArray(), Encoding.UTF8);
                    Console.WriteLine("Успешно. Автомобиль с регистрационным знаком " + System.Convert.ToString(LP) + " удалён из базы.");
                    return(0);
                }

                Console.WriteLine("Ошибка. Автомобиль с регистрационным знаком " + LP + " отсутсвует в базе.");
                return(1);
            }//Удаление автомобиля

            //Статистика базы
            void Statistic()
            {
                IsDBExist();
                Console.WriteLine("\nСтатистика: ");
                int NumberOfRows = System.IO.File.ReadAllLines(DirectoryPath).Length;

                Console.WriteLine("Количество записей: " + NumberOfRows);
                DateTime LastEdit = File.GetLastWriteTime(DirectoryPath);

                Console.WriteLine("Последнее обращение к базе: " + LastEdit);
                DateTime CreationDate = File.GetCreationTime(DirectoryPath);

                Console.WriteLine("Дата создания базы: " + CreationDate);
            }//Статистика базы

            //AddCar(jsonPath);
            //DeleteCar("М001ММ77");
            Output();
            //Statistic();
        }