Esempio n. 1
0
        public void TestCurrentPrice()
        {
            var sp = new StockPosition("AMD", 100, -14.11m);

            Assert.AreNotEqual(-14.11m, sp.GetCurrentPrice());
            Assert.AreNotEqual((Decimal)(-14.11 * 100), sp.GetMarketValue());
        }
Esempio n. 2
0
        private async Task GetRealTimeStockPosition(StockPosition position)
        {
            try
            {
                var stockInfo = await _stockInfoRepo.GetStockInfo(position.Ticker);

                if (stockInfo.Symbol != position.Ticker)
                {
                    stockInfo = await _stockProxy.GetStockInfo(position.Ticker);

                    await _stockInfoRepo.UpsertStockInfo(stockInfo);
                }

                var currentValue = stockInfo.Price * position.Shares;
                var gain         = currentValue - position.Cost;

                position.CurrentPrice       = stockInfo.Price;
                position.CurrentValue       = currentValue;
                position.PercentageOfChange = Math.Round(stockInfo.PercentageOfChange, 4);
                position.Change             = stockInfo.Change;
                position.Gain             = gain;
                position.PercentageOfGain = Math.Round(gain / position.Cost, 4);
            }
            catch (Exception e)
            {
                throw new Exception($"GetRealTimeStockPosition Fail | stock symbol = {position.Ticker}, exception = {e}");
            }
        }
        public void GetShareValueReturnsCorrectValue()
        {
            StockPosition stockPostion = new StockPosition(new Stock(StockId.BONDS));
            var           shareValue   = stockPostion.GetShareValue();

            Assert.AreEqual(shareValue, STARTING_VALUE);
        }
Esempio n. 4
0
        public void GetReferencedDocuments_WriteOffTest()
        {
            var interactive = Substitute.For <IInteractiveQuestion>();

            interactive.Question(string.Empty).ReturnsForAnyArgs(true);
            var baseParameters = Substitute.For <BaseParameters>();

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var nomenclatureType = new ItemsType {
                    Name = "Тестовый тип номенклатуры"
                };
                uow.Save(nomenclatureType);

                var nomenclature = new Nomenclature {
                    Type = nomenclatureType
                };
                uow.Save(nomenclature);

                var employee = new EmployeeCard();
                uow.Save(employee);

                var expense = new Expense {
                    Date      = new DateTime(2021, 9, 10),
                    Employee  = employee,
                    Operation = ExpenseOperations.Employee,
                    Warehouse = warehouse,
                };

                var size   = new Size();
                var height = new Size();
                uow.Save(size);
                uow.Save(height);

                var stockPosition = new StockPosition(nomenclature, 0, size, height);
                var item          = expense.AddItem(stockPosition, 10);

                expense.UpdateOperations(uow, baseParameters, interactive);
                uow.Save(expense);

                //Списываем 3 штуки
                var writeoff = new Writeoff()
                {
                    Date = new DateTime(2021, 9, 11),
                };

                var writeoffItem = writeoff.AddItem(item.EmployeeIssueOperation, 2);
                writeoff.UpdateOperations(uow);
                uow.Save(writeoff);
                uow.Commit();

                var repository = new EmployeeIssueRepository(uow);
                var result     = repository.GetReferencedDocuments(writeoffItem.EmployeeWriteoffOperation.Id);
                Assert.That(result.First().DocumentType, Is.EqualTo(StokDocumentType.WriteoffDoc));
                Assert.That(result.First().DocumentId, Is.EqualTo(writeoff.Id));
                Assert.That(result.First().ItemId, Is.EqualTo(writeoffItem.Id));
            }
        }
Esempio n. 5
0
        public void UpdateOperations_WarehouseOperation_CanChangeWearPercentTest()
        {
            var uow = Substitute.For <IUnitOfWork>();

            var nomeclature = Substitute.For <Nomenclature>();

            var warehouse = Substitute.For <Warehouse>();

            var position = new StockPosition(nomeclature, 0.2m, new Size(), new Size());

            var writeoff = new Writeoff {
                Date = new DateTime(2019, 1, 15)
            };

            writeoff.AddItem(position, warehouse, 2);

            Assert.That(writeoff.Items[0].WearPercent, Is.EqualTo(0.2m));
            //Меняем значение процента износа
            writeoff.Items[0].WearPercent = 2;

            //Выполняем
            writeoff.UpdateOperations(uow);

            Assert.That(writeoff.Items[0].WearPercent, Is.EqualTo(2));
        }
Esempio n. 6
0
 public void AddToPortfolio(StockPosition sp)
 {
     if (StockPortfolio == null)
     {
         StockPortfolio = new List <StockPosition>();
     }
     StockPortfolio.Add(sp);
 }
Esempio n. 7
0
        public void TestStockPositionCreation(string ti, int q, decimal ep)
        {
            var sp = new StockPosition(ti, q, ep);

            Assert.IsTrue(sp.GetTicker() == ti);
            Assert.IsTrue(sp.GetQuantity() == q);
            Assert.IsTrue(sp.GetEntrancePrice() == ep);
        }
        public void MatcheStockPosition_RangeGrowthInEmployeeSize()
        {
            var employee = new EmployeeCard {
                Sex = Sex.M
            };
            var sizeType = new SizeType {
                CategorySizeType = CategorySizeType.Size
            };
            var heightType = new SizeType {
                CategorySizeType = CategorySizeType.Height
            };
            var size52 = new Size {
                Name = "52", SizeType = sizeType, UseInEmployee = true
            };
            var height170And176 = new Size
            {
                Name = "170-176", SizeType = heightType, UseInEmployee = true
            };
            var height170 = new Size {
                Name          = "170",
                SizeType      = heightType,
                UseInEmployee = true,
                SuitableSizes = new List <Size> {
                    height170And176
                }
            };

            employee.Sizes.Add(new EmployeeSize {
                Size = height170And176, SizeType = heightType
            });
            employee.Sizes.Add(new EmployeeSize {
                Size = size52, SizeType = sizeType
            });

            var itemType = Substitute.For <ItemsType>();

            itemType.Category.Returns(ItemTypeCategory.wear);
            var nomenclature = Substitute.For <Nomenclature>();

            nomenclature.Id.Returns(25);
            nomenclature.Type.Returns(itemType);
            nomenclature.MatchingEmployeeSex(Sex.M).Returns(true);
            var protectionTools = Substitute.For <ProtectionTools>();

            protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature });
            var normItem = Substitute.For <NormItem>();

            normItem.ProtectionTools.Returns(protectionTools);

            var employeeItem = new EmployeeCardItem(employee, normItem);

            var stockPosition = new StockPosition(nomenclature, 0, size52, height170);
            var result        = employeeItem.MatcheStockPosition(stockPosition);

            Assert.That(result, Is.True);
        }
        public void GetTotalValueReturnsCorrectValueForThreeStocksOwned()
        {
            int           numberOwned  = 3;
            StockPosition stockPostion = new StockPosition(new Stock(StockId.BONDS));

            stockPostion.NumberOwned = numberOwned;
            var totalValue = stockPostion.GetTotalValue();

            Assert.AreEqual(totalValue, STARTING_VALUE * numberOwned);
        }
Esempio n. 10
0
        public void TestEditOfStockInPortfolio()
        {
            var sp = new StockPosition("AMD", 10, 14.01m);
            var p  = new Portfolio();

            p.AddToPortfolio(sp);

            p.EditPosition(sp.GetTicker(), sp.GetQuantity() - 5, sp.GetEntrancePrice());

            Assert.IsTrue(p.GetStockPortfolio()[0].GetQuantity() == 5);
        }
        public void GetDividendPayoutReturnsCorrectValueForThreeStocksOwned()
        {
            const int     NUMBER_OWNED             = 3;
            const int     DIVIDEND_AMOUNT          = 10;
            const int     DIVIDEND_MULTIPLIER      = 10;
            const int     EXPECTED_DIVIDEND_PAYOUT = DIVIDEND_AMOUNT * DIVIDEND_MULTIPLIER * NUMBER_OWNED;
            StockPosition stockPostion             = new StockPosition(new Stock(StockId.BONDS));

            stockPostion.NumberOwned = NUMBER_OWNED;
            var dividendPayout = stockPostion.GetDividenPayout(DIVIDEND_AMOUNT);

            Assert.AreEqual(dividendPayout, EXPECTED_DIVIDEND_PAYOUT);
        }
Esempio n. 12
0
 public override void UpdateStockAccountInfo(StockAccount account)
 {
     //first time to initialized
     if (account.StockPositionMap.Count <= 0)
     {
         if (null == MarketMakerMgr.GetInstance().GetFairValueMgr().MyMarketData)
         {
             return;
         }
         String        symbol   = MarketMakerMgr.GetInstance().GetFairValueMgr().MyMarketData.Symbol;
         StockPosition position = new StockPosition();
         position.BaseVolume = position.TotalVolume = position.AvailVolume = 100;
         account.StockPositionMap[symbol] = position;
     }
 }
Esempio n. 13
0
 public void TestStockPositionCreation_NullValues(string s)
 {
     try
     {
         // ReSharper disable once UnusedVariable
         var stockPosition = new StockPosition(s, new int(), new int());
         Assert.Fail("Did not throw exception");
     }
     //Required for 100% code coverage
     finally
     {
         Assert.Pass();
     }
     // ReSharper disable once HeuristicUnreachableCode
     Assert.Pass();
 }
Esempio n. 14
0
        public void TestRemovalOfStockNotInPortfolio()
        {
            var sp = new StockPosition("AAPL", 40, 140.0m);
            var p  = new Portfolio();

            p.AddToPortfolio(sp);
            try
            {
                p.RemovePosition("GOOG");
                Assert.Fail();
            }
            catch (NullReferenceException)
            {
                Assert.Pass();
            }
        }
Esempio n. 15
0
        public void TestAddAndRemoveStockFromPortfolio(string tkr, int qty, decimal pr)
        {
            var sp = new StockPosition(tkr, qty, pr);
            var p  = new Portfolio();

            //Test Add
            p.AddToPortfolio(sp);
            Assert.IsNotNull(p.GetStockPortfolio());
            Assert.IsTrue(p.GetStockPortfolio()[0].GetTicker() == tkr);
            Assert.IsTrue(p.GetStockPortfolio()[0].GetQuantity() == qty);
            Assert.IsTrue(p.GetStockPortfolio()[0].GetEntrancePrice() == pr);

            //Test Remove
            p.RemovePosition(sp.GetTicker());
            Assert.IsTrue(p.GetStockPortfolio().Count == 0);
        }
Esempio n. 16
0
        public static List <StockPosition> GetStockPositionsList(string cashPointNumber, string dbConnection)
        {
            var stockPositionList = new List <StockPosition>();

            using (var connection = new SqlConnection(dbConnection))
            {
                using (var command = new SqlCommand(GetActualStockPositionListQuery(cashPointNumber), connection))
                {
                    connection.Open();

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //if stock position IsMixed = 'yes' skip creating transaction.
                            //TO DO add creating transaction if mixed stock position doesn't have child
                            if (reader.GetBoolean(7) == true)
                            {
                                continue;
                            }


                            var stockPosition = new StockPosition()
                            {
                                StockPositionId = reader.GetInt32(0),
                                Direction       = reader.GetInt32(1),
                                Denomination    = reader.IsDBNull(2) ? null : (decimal?)reader.GetDecimal(2),
                                //Denomination = reader.GetDecimal(2),
                                CassetteNumber         = reader.GetInt32(3),
                                CassetteExternalNumber = reader.GetStringOrNull(4),
                                Capacity   = reader.GetInt32(5),
                                MaterialId = reader.GetStringOrNull(6),
                                ProductId  = reader.GetStringOrNull(9),
                                //MaterialId = reader.GetString(6) == null ? string.Empty : reader.GetString(6),
                                Quantity = reader.GetInt32(8),
                                //ProductId = reader.GetString(9) == null ? string.Empty : reader.GetString(9)
                            };


                            stockPositionList.Add(stockPosition);
                        }
                    }
                }
            }
            return(stockPositionList);
        }
Esempio n. 17
0
        public void TestEditOfStockNotInPortfolio()
        {
            var sp = new StockPosition("AMD", 10, 14.01m);
            var p  = new Portfolio();

            p.AddToPortfolio(sp);

            try
            {
                p.EditPosition("GOOG", 50, 1000);
                Assert.Fail();
            }
            catch (NullReferenceException)
            {
                Assert.Pass();
            }
        }
        public void MatcheStockPosition_WithoutGrowthCase()
        {
            var heightType = new SizeType {
                CategorySizeType = CategorySizeType.Height
            };
            var sizeType = new SizeType {
                CategorySizeType = CategorySizeType.Size
            };
            var size = new Size {
                Name = "52", SizeType = sizeType
            };
            var itemType     = Substitute.For <ItemsType>();
            var nomenclature = Substitute.For <Nomenclature>();

            nomenclature.Type.Returns(itemType);
            nomenclature.MatchingEmployeeSex(Sex.M).Returns(true);
            var protectionTools = Substitute.For <ProtectionTools>();

            protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature });
            var employee = Substitute.For <EmployeeCard>();

            employee.Sex.Returns(Sex.M);
            var sizes = new List <EmployeeSize>();

            employee.Sizes.Returns(sizes);
            employee.Sizes.Add(new EmployeeSize {
                Size = new Size {
                    Name = "182"
                }, SizeType = heightType, Employee = employee
            });
            employee.Sizes.Add(new EmployeeSize {
                Size = size, SizeType = sizeType, Employee = employee
            });
            var normItem = Substitute.For <NormItem>();

            normItem.ProtectionTools.Returns(protectionTools);

            var employeeCardItem = new EmployeeCardItem(employee, normItem);

            var stockPosition = new StockPosition(nomenclature, 0, size, null);

            Assert.That(employeeCardItem.MatcheStockPosition(stockPosition));
        }
Esempio n. 19
0
        public static bool GetIsStockTransactionRequired(StockPosition position, int localQuantity)
        {
            var cassetteQuantity = 0;

            if (position.Direction == (int)Direction.Issue || position.Direction == (int)Direction.Recycle)
            {
                cassetteQuantity = position.Quantity - localQuantity;
            }
            if (position.Direction == (int)Direction.Collect || position.Direction == (int)Direction.Recycle)
            {
                cassetteQuantity = position.Quantity + localQuantity;
            }

            if ((cassetteQuantity < 0 && (position.Direction == (int)Direction.Issue || position.Direction == (int)Direction.Recycle)) || (cassetteQuantity > position.Capacity && (position.Direction == (int)Direction.Collect || position.Direction == (int)Direction.Recycle)))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 20
0
        public void Given_a_portfolio_contains_a_stock_position_When_position_has_holdings_and_market_price_Then_valuation_is_holding_times_market_price()
        {
            // Criteria 1A
            //* Given stock positions contain a holding and a market price
            // Arrange
            var roboStock = new StockPosition()
            {
                Stock = new Stock()
                {
                    Symbol = "ROBO"
                }, Qty = 100, Price = 8.22M
            };
            //* When a position has both holding and market price
            //* Then the valuation of the position is holding x market price
            //Act
            var actual   = roboStock.GetValue();
            var expected = 822M;

            //Assert
            Assert.AreEqual <decimal>(expected, actual);
        }
Esempio n. 21
0
        public T DeserializeObject <T>(JToken jToken)
        {
            T obj = default(T);

            try
            {
                Type type = typeof(T);
                if (type.Name == "Quote")
                {
                }
                else if (type.Name == "EtradeAccount")
                {
                    JObject       respObject      = jToken["json.accountBalanceResponse"].Value <JObject>();
                    JObject       accObject       = respObject["accountBalance"].Value <JObject>();
                    JObject       accMarginObject = respObject["marginAccountBalance"].Value <JObject>();
                    EtradeAccount a = new EtradeAccount();
                    a.Id = respObject["accountId"].Value <string>();
                    //a.Type = respObject["accountType"].Value<string>();
                    //a.Balance = accObject["balance"].Value<decimal>();
                    a.MarginAvailable = accMarginObject["marginBalance"].Value <decimal>();

                    obj = (T)Convert.ChangeType(a, typeof(T));
                }
                else if (type.Name == "StockPosition")
                {
                    StockPosition p          = new StockPosition();
                    JObject       prodObject = jToken["productId"].Value <JObject>();
                    p.Symbol     = prodObject["symbol"].Value <string>();
                    p.TotalCount = jToken["qty"].Value <decimal>();

                    obj = (T)Convert.ChangeType(p, typeof(T));
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            //}
            return(obj);
        }
        public void MatcheStockPosition_SizeTest()
        {
            var employee = new EmployeeCard();

            employee.Sex = Sex.M;
            var sizeType = new SizeType {
                CategorySizeType = CategorySizeType.Size
            };
            var size = new Size {
                Name = "52", SizeType = sizeType
            };

            employee.Sizes.Add(new EmployeeSize {
                Size = size, SizeType = sizeType, Employee = employee
            });

            var itemType = Substitute.For <ItemsType>();

            itemType.SizeType.Returns(sizeType);
            var nomenclature = Substitute.For <Nomenclature>();

            nomenclature.Id.Returns(25);
            nomenclature.Type.Returns(itemType);
            nomenclature.MatchingEmployeeSex(Sex.M).Returns(true);
            var protectionTools = Substitute.For <ProtectionTools>();

            protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature });
            var normItem = Substitute.For <NormItem>();

            normItem.ProtectionTools.Returns(protectionTools);

            var employeeItem = new EmployeeCardItem(employee, normItem);

            var stockPosition = new StockPosition(nomenclature, 0, size, null);
            var result        = employeeItem.MatcheStockPosition(stockPosition);

            Assert.That(result, Is.True);
        }
Esempio n. 23
0
        public void UpdateEmployeeWearItems_NextIssueDiffIdsTest()
        {
            NewSessionWithSameDB();
            var ask = Substitute.For <IInteractiveQuestion>();

            ask.Question(string.Empty).ReturnsForAnyArgs(true);

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var sizeType   = new SizeType();
                var heightType = new SizeType();
                uow.Save(sizeType);
                uow.Save(heightType);

                var nomenclatureType = new ItemsType {
                    Name     = "Тестовый тип номенклатуры",
                    SizeType = sizeType
                };
                uow.Save(nomenclatureType);


                //Поднимаем id номенклатуры до 2.
                uow.Save(new Nomenclature());

                var nomenclature = new Nomenclature {
                    Type = nomenclatureType
                };
                uow.Save(nomenclature);

                var size = new Size {
                    SizeType = sizeType
                };
                var height = new Size {
                    SizeType = heightType
                };
                uow.Save(size);
                uow.Save(height);

                var position1 = new StockPosition(nomenclature, 0, size, height);

                //Поднимаем id сиза до 3.
                uow.Save(new ProtectionTools {
                    Name = "Id = 1"
                });
                uow.Save(new ProtectionTools {
                    Name = "Id = 2"
                });

                var protectionTools = new ProtectionTools {
                    Name = "СИЗ для тестирования"
                };
                protectionTools.AddNomeclature(nomenclature);
                uow.Save(protectionTools);

                var norm     = new Norm();
                var normItem = norm.AddItem(protectionTools);
                normItem.Amount      = 1;
                normItem.NormPeriod  = NormPeriodType.Month;
                normItem.PeriodCount = 1;
                uow.Save(norm);

                var employee = new EmployeeCard();
                employee.AddUsedNorm(norm);
                uow.Save(employee);
                uow.Commit();

                var income = new Income {
                    Warehouse = warehouse,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var incomeItem1 = income.AddItem(nomenclature);
                incomeItem1.Amount = 10;
                income.UpdateOperations(uow, ask);
                uow.Save(income);

                var expense = new Expense {
                    Operation = ExpenseOperations.Employee,
                    Warehouse = warehouse,
                    Employee  = employee,
                    Date      = new DateTime(2018, 10, 22)
                };
                expense.AddItem(position1, 1);

                var baseParameters = Substitute.For <BaseParameters>();
                baseParameters.ColDayAheadOfShedule.Returns(0);

                //Обновление операций
                expense.UpdateOperations(uow, baseParameters, ask);
                uow.Save(expense);
                uow.Commit();

                expense.UpdateEmployeeWearItems();
                uow.Commit();

                using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot()) {
                    var employeeTest = uow2.GetById <EmployeeCard>(employee.Id);
                    Assert.That(employeeTest.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2018, 11, 22)));
                }
            }
        }
Esempio n. 24
0
 public static Decimal VolatilityPriceChanges(StockPosition sp, int n)
 {
     Decimal[] closings = new DataManipulator().GetListOfDailyClosingPrices(sp.GetTicker(), n);
     return(VolatilityPriceChanges(closings));
 }
Esempio n. 25
0
 public static Decimal NDayVolatility(int n, StockPosition sp)
 {
     Decimal[] prices = new DataManipulator().GetListOfDailyClosingPrices(sp.GetTicker(), n);
     return(StandardDeviationPopulation(prices));
 }
Esempio n. 26
0
        public void GetReferencedDocuments_CollectiveExpenseTest()
        {
            var interactive = Substitute.For <IInteractiveQuestion>();

            interactive.Question(string.Empty).ReturnsForAnyArgs(true);
            var baseParameters = Substitute.For <BaseParameters>();

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var protectionTools = new ProtectionTools {
                    Name = "Тестовая курточка"
                };
                uow.Save(protectionTools);

                var nomenclatureType = new ItemsType {
                    Name = "Тестовый тип номенклатуры"
                };
                uow.Save(nomenclatureType);

                var nomenclature = new Nomenclature {
                    Type = nomenclatureType
                };
                nomenclature.ProtectionTools.Add(protectionTools);
                uow.Save(nomenclature);

                var norm = new Norm();
                norm.AddItem(protectionTools);
                uow.Save(norm);

                var employee = new EmployeeCard();
                employee.AddUsedNorm(norm);
                uow.Save(employee);

                var employee2 = new EmployeeCard();
                employee2.AddUsedNorm(norm);
                uow.Save(employee2);

                var expense = new CollectiveExpense()
                {
                    Date      = new DateTime(2021, 9, 10),
                    Warehouse = warehouse,
                };

                var size   = new Size();
                var height = new Size();
                uow.Save(size);
                uow.Save(height);

                var stockPosition = new StockPosition(nomenclature, 0, size, height);
                var item          = expense.AddItem(employee.WorkwearItems.FirstOrDefault(), stockPosition, 1);
                var item2         = expense.AddItem(employee2.WorkwearItems.FirstOrDefault(), stockPosition, 10);

                expense.UpdateOperations(uow, baseParameters, interactive);
                uow.Save(expense);
                uow.Commit();

                var repository = new EmployeeIssueRepository(uow);
                var results    = repository
                                 .GetReferencedDocuments(item.EmployeeIssueOperation.Id, item2.EmployeeIssueOperation.Id);
                var result1 = results.First(x => x.OperationId == item.EmployeeIssueOperation.Id);
                Assert.That(result1.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense));
                Assert.That(result1.DocumentId, Is.EqualTo(expense.Id));
                Assert.That(result1.ItemId, Is.EqualTo(item.Id));
                var result2 = results.First(x => x.OperationId == item2.EmployeeIssueOperation.Id);
                Assert.That(result2.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense));
                Assert.That(result2.DocumentId, Is.EqualTo(expense.Id));
                Assert.That(result2.ItemId, Is.EqualTo(item2.Id));
            }
        }
        public void IssuingToSubdivisionTest()
        {
            var ask = Substitute.For <IInteractiveQuestion>();

            ask.Question(string.Empty).ReturnsForAnyArgs(true);
            var baseParameters = Substitute.For <BaseParameters>();

            baseParameters.ColDayAheadOfShedule.Returns(0);

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var sizeType = new SizeType();
                uow.Save(sizeType);

                var nomenclatureType = new ItemsType {
                    Name     = "Тестовый тип номенклатуры",
                    SizeType = sizeType
                };
                uow.Save(nomenclatureType);

                var nomenclature = new Nomenclature {
                    Name = "Тестовая номеклатура",
                    Type = nomenclatureType
                };
                uow.Save(nomenclature);

                var size = new Size {
                    SizeType = sizeType
                };
                var height = new Size();
                uow.Save(size);
                uow.Save(height);

                var position1 = new StockPosition(nomenclature, 0, size, height);

                var subdivision = new Subdivision {
                    Name = "Тестовое подразделение"
                };
                uow.Save(subdivision);

                var place = new SubdivisionPlace {
                    Name        = "Тестовое место",
                    Subdivision = subdivision
                };
                uow.Save(place);

                var income = new Income {
                    Warehouse = warehouse,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var incomeItem1 = income.AddItem(nomenclature);
                incomeItem1.Amount = 10;
                income.UpdateOperations(uow, ask);
                uow.Save(income);

                var expense = new Expense {
                    Operation   = ExpenseOperations.Object,
                    Warehouse   = warehouse,
                    Subdivision = subdivision,
                    Date        = new DateTime(2018, 10, 22)
                };
                var item1 = expense.AddItem(position1, 1);
                item1.SubdivisionPlace = place;

                //Обновление операций
                expense.UpdateOperations(uow, baseParameters, ask);
                uow.Save(expense);
                uow.Commit();

                var listed  = SubdivisionRepository.ItemsBalance(uow, subdivision);
                var balance = listed.First();
                Assert.That(balance.Amount, Is.EqualTo(1));
                Assert.That(balance.NomeclatureName, Is.EqualTo("Тестовая номеклатура"));
                Assert.That(balance.Place, Is.EqualTo("Тестовое место"));
                Assert.That(balance.WearPercent, Is.EqualTo(0m));
            }
        }
Esempio n. 28
0
        public void TestGetEntranceValueOfPosition(decimal p, int q, decimal expVal)
        {
            var sp = new StockPosition("TEST", q, p);

            Assert.IsTrue(expVal == sp.GetEntranceValue());
        }
Esempio n. 29
0
        public void IssueAndCreateIssuanceSheetTest()
        {
            var ask = Substitute.For <IInteractiveQuestion>();

            ask.Question(string.Empty).ReturnsForAnyArgs(true);
            var baseParameters = Substitute.For <BaseParameters>();

            baseParameters.ColDayAheadOfShedule.Returns(0);

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var sizeType   = new SizeType();
                var heightType = new SizeType();
                uow.Save(sizeType);
                uow.Save(heightType);

                var nomenclatureType = new ItemsType {
                    Name       = "Тестовый тип номенклатуры",
                    SizeType   = sizeType,
                    HeightType = heightType
                };
                uow.Save(nomenclatureType);

                var nomenclature = new Nomenclature {
                    Type = nomenclatureType
                };
                uow.Save(nomenclature);

                var protectionTools = new ProtectionTools {
                    Name = "СИЗ для тестирования"
                };
                protectionTools.AddNomeclature(nomenclature);
                uow.Save(protectionTools);

                var size = new Size {
                    SizeType = sizeType
                };
                var height = new Size {
                    SizeType = heightType
                };
                uow.Save(size);
                uow.Save(height);

                var position1 = new StockPosition(nomenclature, 0, size, height);

                var norm     = new Norm();
                var normItem = norm.AddItem(protectionTools);
                normItem.Amount      = 1;
                normItem.NormPeriod  = NormPeriodType.Year;
                normItem.PeriodCount = 1;
                uow.Save(norm);

                var employee = new EmployeeCard();
                employee.AddUsedNorm(norm);
                uow.Save(employee);
                uow.Commit();

                var income = new Income {
                    Warehouse = warehouse,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var incomeItem1 = income.AddItem(nomenclature);
                incomeItem1.Amount = 10;
                income.UpdateOperations(uow, ask);
                uow.Save(income);

                var expense = new Expense {
                    Operation = ExpenseOperations.Employee,
                    Warehouse = warehouse,
                    Employee  = employee,
                    Date      = new DateTime(2018, 10, 22)
                };
                var expenseItem = expense.AddItem(position1, 1);

                expense.CreateIssuanceSheet(null);

                //Обновление операций
                expense.UpdateOperations(uow, baseParameters, ask);
                expense.UpdateIssuanceSheet();
                uow.Save(expense.IssuanceSheet);
                uow.Save(expense);
                uow.Commit();
                expense.UpdateEmployeeWearItems();
                uow.Commit();

                Assert.That(expense.IssuanceSheet, Is.Not.Null);
                var issuanceItem = expense.IssuanceSheet.Items.First();
                Assert.That(issuanceItem.ExpenseItem, Is.EqualTo(expenseItem));
            }
        }
Esempio n. 30
0
        public void UpdateOperations_IssuingMultipleRows_TwoNomenclatureSameNeedsTest()
        {
            var ask = Substitute.For <IInteractiveQuestion>();

            ask.Question(string.Empty).ReturnsForAnyArgs(true);

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse();
                uow.Save(warehouse);

                var sizeType   = new SizeType();
                var heightType = new SizeType();
                uow.Save(sizeType);
                uow.Save(heightType);

                var nomenclatureType = new ItemsType {
                    Name     = "Тестовый тип номенклатуры",
                    SizeType = sizeType
                };
                uow.Save(nomenclatureType);

                var nomenclature = new Nomenclature {
                    Type = nomenclatureType
                };
                uow.Save(nomenclature);

                var size = new Size {
                    SizeType = sizeType
                };
                var height = new Size {
                    SizeType = heightType
                };
                uow.Save(size);
                uow.Save(height);

                var position1 = new StockPosition(nomenclature, 0, size, height);

                var nomenclature2 = new Nomenclature {
                    Type = nomenclatureType
                };
                uow.Save(nomenclature2);

                var position2 = new StockPosition(nomenclature2, 0, size, height);

                var protectionTools = new ProtectionTools {
                    Name = "СИЗ для тестирования"
                };
                protectionTools.AddNomeclature(nomenclature);
                protectionTools.AddNomeclature(nomenclature2);
                uow.Save(protectionTools);

                var norm     = new Norm();
                var normItem = norm.AddItem(protectionTools);
                normItem.Amount      = 1;
                normItem.NormPeriod  = NormPeriodType.Year;
                normItem.PeriodCount = 1;
                uow.Save(norm);

                var employee = new EmployeeCard();
                employee.AddUsedNorm(norm);
                uow.Save(employee);
                uow.Commit();

                var employeeSize = new EmployeeSize {
                    Size = size, SizeType = sizeType, Employee = employee
                };
                var employeeHeight = new EmployeeSize {
                    Size = height, SizeType = heightType, Employee = employee
                };

                employee.Sizes.Add(employeeSize);
                employee.Sizes.Add(employeeHeight);

                var income = new Income {
                    Warehouse = warehouse,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var incomeItem1 = income.AddItem(nomenclature);
                incomeItem1.Amount = 10;
                var incomeItem2 = income.AddItem(nomenclature2);
                incomeItem2.Amount = 5;
                income.UpdateOperations(uow, ask);
                uow.Save(income);

                var expense = new Expense {
                    Operation = ExpenseOperations.Employee,
                    Warehouse = warehouse,
                    Employee  = employee,
                    Date      = new DateTime(2018, 10, 22)
                };
                expense.AddItem(position1, 1);
                expense.AddItem(position2, 1);

                var baseParameters = Substitute.For <BaseParameters>();
                baseParameters.ColDayAheadOfShedule.Returns(0);

                //Обновление операций
                expense.UpdateOperations(uow, baseParameters, ask);
                uow.Save(expense);
                uow.Commit();

                expense.UpdateEmployeeWearItems();

                //Тут ожидаем предложение перенести дату использование второй номенклатуры на год.
                ask.ReceivedWithAnyArgs().Question(String.Empty);

                Assert.That(employee.WorkwearItems[0].NextIssue,
                            Is.EqualTo(new DateTime(2020, 10, 22))
                            );
            }
        }