Beispiel #1
0
        public void Deal_Quota_Deletion_Must_Be_Ok()
        {
            var deal = new Deal("Тестовая сделка", user)
            {
                Id = 1
            };
            var quota1 = new DealQuota("Тестовая квота 1", 10)
            {
                Id = 2
            };
            var quota2 = new DealQuota("Тестовая квота 2", 99)
            {
                Id = 3
            };

            deal.AddQuota(quota1);
            deal.AddQuota(quota2);

            Assert.AreEqual(2, deal.QuotaCount);

            deal.RemoveQuota(quota2, true);

            Assert.AreEqual(1, deal.QuotaCount);
            Assert.AreEqual(null, quota2.DeletionDate);
        }
        public void Init()
        {
            storage = new Storage("Тестовое место хранения", StorageType.DistributionCenter)
            {
                Id = 1
            };
            user                = new User(new Employee("Иван", "Иванов", "Иванович", new EmployeePost("Менеджер"), null), "Иванов Иван", "ivanov", "pa$$w0rd", new Team("Тестовая команда", null), null);
            economicAgent       = new PhysicalPerson(new LegalForm("Легал форм", EconomicAgentType.PhysicalPerson));
            accountOrganization = new AccountOrganization("Орг1 кор имя", "орг1 длин имя", economicAgent)
            {
                Id = 1
            };
            clientOrganization = new ClientOrganization("client org", "cllll", economicAgent)
            {
                Id = 3
            };
            storage.AddAccountOrganization(accountOrganization);
            deal = new Deal("Тестовая сделка", user)
            {
                Id = 2
            };
            client        = new Client("клиент1", new ClientType("основной тип клиента"), ClientLoyalty.Follower, new ClientServiceProgram("программа 1"), new ClientRegion("Регион 1"), 10);
            deal.Contract = new ClientContract(accountOrganization, clientOrganization, "Договор 1", "1", DateTime.Now, DateTime.Now);
            client.AddDeal(deal);
            quota = new DealQuota("Тестовая квота", 20, 14, 20000.0M)
            {
                Id = 3
            };
            deal.AddQuota(quota);
            team = new Mock <Team>();

            expenditureWaybill = new ExpenditureWaybill("123", DateTime.Today, storage, deal, team.Object, quota, false, user, DeliveryAddressType.ClientAddress, "", DateTime.Today, user);
        }
Beispiel #3
0
        public void CheckPossibilityToRemoveQuota(Deal deal, DealQuota quota, User user)
        {
            // права
            CheckPermissionToPerformOperation(deal, user, Permission.Deal_Quota_Remove);

            // сущность
            deal.CheckPossibilityToRemoveQuota(quota);
        }
Beispiel #4
0
        public void Delete(DealQuota quota, User user)
        {
            CheckPossibilityToDelete(quota, user);

            RemoveDealQuotaFromAllDeals(quota);

            dealQuotaRepository.Delete(quota);
        }
Beispiel #5
0
        public void DealQuota_Without_Prepayment_InitialParameters_Must_Be_Set()
        {
            var quota = new DealQuota("Тестовая квота", 20, 15, 10000);

            Assert.AreEqual(20, quota.DiscountPercent);
            Assert.AreEqual(10000, quota.CreditLimitSum);
            Assert.AreEqual((short)15, quota.PostPaymentDays);
            Assert.IsFalse(quota.IsPrepayment);
        }
Beispiel #6
0
        public void CheckPossibilityToEdit(DealQuota dealQuota, User user, bool checkLogic = true)
        {
            CheckPermissionToPerformOperation(user, Permission.DealQuota_Edit);

            if (checkLogic)
            {
                ValidationUtils.Assert(!AreDealQuotaSales(dealQuota), "Невозможно изменить квоту, по которой имеются накладные реализации.");
            }
        }
Beispiel #7
0
        /// <summary>
        /// Проверка имени квоты на уникальность
        /// </summary>
        /// <param name="deal">Квота</param>
        public void CheckDealQuotaNameUniqueness(DealQuota dealQuota)
        {
            var isUnique = dealQuotaRepository.Query <DealQuota>().Where(x => x.Name == dealQuota.Name && x.Id != dealQuota.Id).Count() == 0;

            if (!isUnique)
            {
                throw new Exception(String.Format("Квота с названием «{0}» уже существует.", dealQuota.Name));
            }
        }
Beispiel #8
0
        public void RemoveDealQuotaFromAllDeals(DealQuota quota)
        {
            var dealsQuery = dealQuotaRepository.Query <Deal>();

            dealsQuery.Restriction <DealQuota>(x => x.Quotas).Where(x => x.Id == quota.Id);
            var deals = dealsQuery.ToList <Deal>();

            foreach (var deal in deals)
            {
                deal.RemoveQuota(quota, false);
            }
        }
Beispiel #9
0
        public bool IsPossibilityToDelete(DealQuota dealQuota, User user)
        {
            try
            {
                CheckPossibilityToDelete(dealQuota, user);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #10
0
        public bool IsPossibilityToEdit(DealQuota dealQuota, User user, bool checkLogic = true)
        {
            try
            {
                CheckPossibilityToEdit(dealQuota, user, checkLogic);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #11
0
        public bool IsPossibilityToRemoveQuota(Deal deal, DealQuota quota, User user)
        {
            try
            {
                CheckPossibilityToRemoveQuota(deal, quota, user);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #12
0
        public void DealQuota_With_Prepayment_InitialParameters_Must_Be_Set()
        {
            var quota = new DealQuota("Тестовая квота", 50);

            Assert.AreEqual("Тестовая квота", quota.Name);
            Assert.AreEqual(50, quota.DiscountPercent);
            Assert.AreEqual(DateTime.Today, quota.CreationDate.Date);
            Assert.IsNull(quota.CreditLimitSum);
            Assert.IsNull(quota.DeletionDate);
            Assert.IsNull(quota.EndDate);
            Assert.AreEqual(0, quota.Id);
            Assert.IsTrue(quota.IsPrepayment);
            Assert.IsNull(quota.PostPaymentDays);
            Assert.AreEqual(DateTime.Today, quota.StartDate.Date);
        }
Beispiel #13
0
        public void Deal_Quota_Addition_Must_Be_Ok()
        {
            var deal = new Deal("Тестовая сделка", user)
            {
                Id = 1
            };
            var quota = new DealQuota("Тестовая квота", 10)
            {
                Id = 2
            };

            deal.AddQuota(quota);

            Assert.AreEqual(1, deal.QuotaCount);
            Assert.AreEqual(2, deal.Quotas.ElementAt(0).Id);
            Assert.AreEqual(1, deal.Id);
            Assert.AreEqual(DateTime.Today, quota.StartDate.Date);
        }
Beispiel #14
0
        public void Init()
        {
            creationDate        = DateTime.Now;
            currentDate         = DateTime.Now;
            storage             = new Storage("qwe", StorageType.ExtraStorage);
            deal                = new Mock <Deal>();
            quota               = new DealQuota("asd", 10, 45, 15000);
            user                = new Mock <User>();
            createdBy           = new Mock <User>();
            team                = new Mock <Team>();
            contract            = new Mock <ClientContract>();
            accountOrganization = new Mock <AccountOrganization>();
            valueAddedTax       = new ValueAddedTax("18%", 18);
            ag     = new ArticleGroup("Группа товаров", "Группа товаров");
            art1   = new Article("Товар 1", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            art2   = new Article("Товар 2", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            art3   = new Article("Товар 3", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            prices = new List <ArticleAccountingPrice>();
            prices.Add(new ArticleAccountingPrice(art1, 10M));
            prices.Add(new ArticleAccountingPrice(art2, 13M));
            prices.Add(new ArticleAccountingPrice(art3, 15M));
            receiptWaybillRow = new ReceiptWaybillRow(art1, 150, valueAddedTax, 75);

            user.Setup(x => x.Id).Returns(43);
            createdBy.Setup(x => x.Id).Returns(1);
            team.Setup(x => x.Id).Returns(1);
            deal.Setup(x => x.IsActive).Returns(true);
            deal.Setup(x => x.IsClosed).Returns(false);
            deal.Setup(x => x.Quotas).Returns(new List <DealQuota> {
                quota
            });
            deal.Setup(x => x.Contract).Returns(contract.Object);
            deal.Setup(x => x.Id).Returns(2);
            accountOrganization.Setup(x => x.Storages).Returns(new List <Storage> {
                storage
            });
            contract.Setup(x => x.AccountOrganization).Returns(accountOrganization.Object);

            waybill    = new ExpenditureWaybill("123", currentDate, storage, deal.Object, team.Object, quota, false, user.Object, DeliveryAddressType.CustomAddress, "qwerty", creationDate, createdBy.Object);
            waybillRow = new ExpenditureWaybillRow(receiptWaybillRow, 10, valueAddedTax);
            waybill.AddRow(waybillRow);
        }
Beispiel #15
0
 /// <summary>
 /// Проверка наличия накладных реализации по квоте
 /// </summary>
 /// <param name="quota">Квота</param>
 /// <returns><value>true</value>, если существует хотя бы одна накладная реализации; <value>false</value> иначе</returns>
 private bool AreDealQuotaSales(DealQuota quota)
 {
     return(dealQuotaRepository.Query <SaleWaybill>().Where(x => x.Quota.Id == quota.Id).Count() > 0);
 }
        public void Init()
        {
            employee1           = new Employee("Работник 1 имя", "Работник 1 фамилия", "Работник 1 отчество", new EmployeePost("Работник 1 пост"), null);
            curator             = new User(employee1, "Куратор", "log", "pas", new Team("Тестовая команда", null), null);
            team                = new Team("123", curator);
            economicAgent       = new PhysicalPerson(new LegalForm("Легал форм", EconomicAgentType.PhysicalPerson));
            accountOrganization = new AccountOrganization("Орг1 кор имя", "орг1 длин имя", economicAgent)
            {
                Id = 1
            };
            accountOrganizationAnother = new AccountOrganization("Орг2 кор имя", "орг2 длин имя", economicAgent)
            {
                Id = 2
            };
            clientOrganization = new ClientOrganization("client org", "cllll", economicAgent)
            {
                Id = 3
            };
            client = new Client("клиент1", new ClientType("основной тип клиента"), ClientLoyalty.Follower, new ClientServiceProgram("программа 1"), new ClientRegion("Регион 1"), 10);
            deal   = new Deal("Тестовая сделка", curator);
            client.AddDeal(deal);
            storage = new Storage("Склад 1", StorageType.ExtraStorage);
            storage.AddAccountOrganization(accountOrganization);
            storage.AddAccountOrganization(accountOrganizationAnother);
            storage2 = new Storage("Склад 2", StorageType.ExtraStorage);
            returnFromClientReason  = new ReturnFromClientReason("Брак");
            returnFromClientWaybill = new ReturnFromClientWaybill("142", DateTime.Today, accountOrganization, deal, team, storage, returnFromClientReason, curator, curator, DateTime.Now);
            valueAddedTax           = new ValueAddedTax("18%", 18);
            ag     = new ArticleGroup("Группа товаров", "Группа товаров");
            art1   = new Article("Товар 1", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            art2   = new Article("Товар 2", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            art3   = new Article("Товар 3", ag, new MeasureUnit("шт.", "штуки", "123", 1), false);
            Prices = new List <ArticleAccountingPrice>();
            Prices.Add(new ArticleAccountingPrice(art1, 10M));
            Prices.Add(new ArticleAccountingPrice(art2, 13M));
            Prices.Add(new ArticleAccountingPrice(art3, 15M));

            deal1  = new Deal("Deal1", curator);
            deal2  = new Deal("Deal2", curator);
            quota1 = new DealQuota("qq", 1);
            quota2 = new DealQuota("qq", 2);

            deal1.AddQuota(quota1);
            deal2.AddQuota(quota2);
            deal1.Contract = new ClientContract(accountOrganization, clientOrganization, "Договор", "1", DateTime.Now, DateTime.Now);
            deal2.Contract = new ClientContract(accountOrganizationAnother, clientOrganization, "kk", "22", DateTime.Today, DateTime.Now);

            recRow1 = new ReceiptWaybillRow(art1, 5, 50, new ValueAddedTax("18%", 18))
            {
                Id = Guid.NewGuid()
            };
            recRow1_1 = new ReceiptWaybillRow(art1, 2, 30, new ValueAddedTax("18%", 18))
            {
                Id = Guid.NewGuid()
            };
            recRow2 = new ReceiptWaybillRow(art2, 7, 35, new ValueAddedTax("18%", 18))
            {
                Id = Guid.NewGuid()
            };
            recRow3 = new ReceiptWaybillRow(art3, 9, 90, new ValueAddedTax("18%", 18))
            {
                Id = Guid.NewGuid()
            };
            recRow1.PurchaseCost = 50 / 5;
            recRow1.PurchaseCost = 35 / 7;
            recRow1.PurchaseCost = 90 / 9;

            saleRow1 = new ExpenditureWaybillRow(recRow1, 3, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };
            saleRow1_1 = new ExpenditureWaybillRow(recRow1_1, 1, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };
            saleRow2 = new ExpenditureWaybillRow(recRow2, 4, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };
            saleRow3 = new ExpenditureWaybillRow(recRow3, 5, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };

            saleRowAnother1 = new ExpenditureWaybillRow(recRow1, 3, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };
            saleRowAnother2 = new ExpenditureWaybillRow(recRow2, 4, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };
            saleRowAnother3 = new ExpenditureWaybillRow(recRow3, 5, valueAddedTax)
            {
                Id = Guid.NewGuid()
            };

            sale = new ExpenditureWaybill("1", DateTime.Today, storage, deal1, team, quota1, true, curator, DeliveryAddressType.ClientAddress, "", DateTime.Now, curator)
            {
                Id = Guid.NewGuid()
            };
            saleAnother = new ExpenditureWaybill("1", DateTime.Today, storage, deal2, team, quota2, true, curator, DeliveryAddressType.ClientAddress, "", DateTime.Now, curator)
            {
                Id = Guid.NewGuid()
            };

            sale.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRow1);
            sale.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRow2);
            sale.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRow3);
            saleAnother.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRowAnother1);
            saleAnother.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRowAnother2);
            saleAnother.As <ExpenditureWaybill>().AddRow((ExpenditureWaybillRow)saleRowAnother3);

            sale.As <ExpenditureWaybill>().Accept(Prices, false, curator, DateTime.Now);

            saleAnother.As <ExpenditureWaybill>().Accept(Prices, false, curator, DateTime.Now);
        }
Beispiel #17
0
 public void Save(DealQuota entity)
 {
     CurrentSession.SaveOrUpdate(entity);
 }
Beispiel #18
0
        public void CheckPossibilityToDelete(DealQuota dealQuota, User user)
        {
            CheckPermissionToPerformOperation(user, Permission.DealQuota_Delete);

            ValidationUtils.Assert(!AreDealQuotaSales(dealQuota), "Невозможно удалить квоту, по которой имеются накладные реализации.");
        }
Beispiel #19
0
        public void RemoveQuota(Deal deal, DealQuota quota, User user)
        {
            CheckPossibilityToRemoveQuota(deal, quota, user);

            deal.RemoveQuota(quota, false);
        }
Beispiel #20
0
        public void AddQuota(Deal deal, DealQuota dealQuota, User user)
        {
            CheckPossibilityToAddQuota(deal, user);

            deal.AddQuota(dealQuota);
        }
        public void Init()
        {
            // инициализация IoC
            IoCInitializer.Init();

            setting = new Setting()
            {
                UseReadyToAcceptStateForReturnFromClientWaybill = false
            };
            settingRepository = Mock.Get(IoCContainer.Resolve <ISettingRepository>());
            settingRepository.Setup(x => x.Get()).Returns(setting);

            storage = new Storage("qwe", StorageType.ExtraStorage)
            {
                Id = 42
            };
            accOrgSender = new Mock <AccountOrganization>();
            accOrgSender.Setup(x => x.Id).Returns(1);
            accOrgRecipient = new Mock <AccountOrganization>();
            accOrgRecipient.Setup(x => x.Id).Returns(2);

            valueAddedTax = new ValueAddedTax();
            user          = new Mock <User>();
            user.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);
            createdBy = new Mock <User>();
            createdBy.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);
            acceptedBy = new Mock <User>();
            acceptedBy.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);
            receiptedBy = new Mock <User>();
            receiptedBy.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);

            var articleGroup = new ArticleGroup("Тестовая группа", "Тестовая группа");
            var measureUnit  = new MeasureUnit("шт.", "Штука", "123", 0)
            {
                Id = 1
            };

            articleA = new Article("Тестовый товар A", articleGroup, measureUnit, true)
            {
                Id = 1
            };
            articleB = new Article("Тестовый товар Б", articleGroup, measureUnit, true)
            {
                Id = 2
            };

            receiptWaybillRow1 = new Mock <ReceiptWaybillRow>();
            receiptWaybillRow1.Setup(x => x.Article).Returns(articleA);

            receiptWaybillRow2 = new Mock <ReceiptWaybillRow>();
            receiptWaybillRow2.Setup(x => x.Article).Returns(articleB);


            articleAccountingPrice = new List <ArticleAccountingPrice>()
            {
                new ArticleAccountingPrice(articleA, 100)
            };

            returnFromClientWaybillRepository = Mock.Get(IoCContainer.Resolve <IReturnFromClientWaybillRepository>());

            articlePriceService = Mock.Get(IoCContainer.Resolve <IArticlePriceService>());
            articlePriceService.Setup(x => x.GetArticleAccountingPrices(It.Is <short>(y => y == storage.Id), It.IsAny <IEnumerable <int> >())).Returns(articleAccountingPrice);
            articlePriceService.Setup(x => x.GetArticleAccountingPrices(It.Is <short>(y => y == storage.Id), It.IsAny <ISubQuery>(), It.IsAny <DateTime>())).Returns(articleAccountingPrice);
            returnFromClientWaybillRepository = Mock.Get(IoCContainer.Resolve <IReturnFromClientWaybillRepository>());

            expenditureWaybillIndicatorService = Mock.Get(IoCContainer.Resolve <IExpenditureWaybillIndicatorService>());
            articleAvailabilityService         = Mock.Get(IoCContainer.Resolve <IArticleAvailabilityService>());

            returnFromClientWaybillService = new ReturnFromClientWaybillService(
                IoCContainer.Resolve <ISettingRepository>(),
                returnFromClientWaybillRepository.Object,
                IoCContainer.Resolve <ITeamRepository>(),
                IoCContainer.Resolve <IDealRepository>(),
                IoCContainer.Resolve <IStorageRepository>(),
                IoCContainer.Resolve <IUserRepository>(),
                IoCContainer.Resolve <IArticlePriceService>(),
                IoCContainer.Resolve <IAcceptedSaleIndicatorService>(),
                IoCContainer.Resolve <IReturnFromClientService>(),
                IoCContainer.Resolve <IFactualFinancialArticleMovementService>(),
                IoCContainer.Resolve <IArticleMovementOperationCountService>(),
                IoCContainer.Resolve <IArticleMovementService>(),
                IoCContainer.Resolve <IDealPaymentDocumentDistributionService>(),
                IoCContainer.Resolve <IDealIndicatorService>(),
                IoCContainer.Resolve <IArticleRevaluationService>(),
                expenditureWaybillIndicatorService.Object,
                articleAvailabilityService.Object
                );

            deal  = new Mock <Deal>();
            quota = new DealQuota("asd", 10, 45, 15000);
            team  = new Team("Тестовая команда", It.IsAny <User>())
            {
                Id = 1
            };

            contract = new Mock <ClientContract>();
            var economicAgent = new Mock <EconomicAgent>();

            accountOrganization = new AccountOrganization("asd", "asd", economicAgent.Object);

            deal.Setup(x => x.IsActive).Returns(true);
            deal.Setup(x => x.IsClosed).Returns(false);
            deal.Setup(x => x.Quotas).Returns(new List <DealQuota> {
                quota
            });
            deal.Setup(x => x.Contract).Returns(contract.Object);
            accountOrganization.AddStorage(storage);

            contract.Setup(x => x.AccountOrganization).Returns(accountOrganization);

            returnFromClientWaybill = new ReturnFromClientWaybill("123", DateTime.Now, accountOrganization, deal.Object, team, storage, new ReturnFromClientReason(), user.Object, createdBy.Object, DateTime.Now);

            sale = new Mock <ExpenditureWaybill>();
            sale.Setup(x => x.Sender).Returns(accountOrganization);
            sale.Setup(x => x.Team).Returns(team);
            sale.Setup(x => x.Is <ExpenditureWaybill>()).Returns(true);
            sale.Setup(x => x.As <ExpenditureWaybill>()).Returns(sale.Object);

            #region Создание позиции 1

            saleRow1 = new Mock <ExpenditureWaybillRow>();
            saleRow1.Setup(x => x.ExpenditureWaybill).Returns(sale.Object);
            saleRow1.Setup(x => x.SaleWaybill).Returns(sale.Object);
            saleRow1.Setup(x => x.Id).Returns(Guid.NewGuid());
            saleRow1.Setup(x => x.SellingCount).Returns(100);
            saleRow1.Setup(x => x.As <ExpenditureWaybillRow>()).Returns(saleRow1.Object);
            saleRow1.Setup(x => x.Is <ExpenditureWaybillRow>()).Returns(true);
            saleRow1.Setup(x => x.Article).Returns(articleA);
            saleRow1.Setup(x => x.SalePrice).Returns(128);
            saleRow1.Setup(x => x.ReceiptWaybillRow).Returns(receiptWaybillRow1.Object);

            #endregion

            #region Создание позиции 2

            saleRow2 = new Mock <ExpenditureWaybillRow>();
            saleRow2.Setup(x => x.ExpenditureWaybill).Returns(sale.Object);
            saleRow2.Setup(x => x.SaleWaybill).Returns(sale.Object);
            saleRow2.Setup(x => x.Id).Returns(Guid.NewGuid());
            saleRow2.Setup(x => x.SellingCount).Returns(100);
            saleRow2.Setup(x => x.As <ExpenditureWaybillRow>()).Returns(saleRow2.Object);
            saleRow2.Setup(x => x.Is <ExpenditureWaybillRow>()).Returns(true);
            saleRow2.Setup(x => x.Article).Returns(articleA);
            saleRow2.Setup(x => x.SalePrice).Returns(128);
            saleRow2.Setup(x => x.ReceiptWaybillRow).Returns(receiptWaybillRow2.Object);

            #endregion

            ReturnFromClientWaybillRow row = new ReturnFromClientWaybillRow(saleRow1.Object, 1);
            returnFromClientWaybill.AddRow(row);

            articleMovementService = new Mock <IArticleMovementService>();

            articleMovementService.Setup(x => x.CancelArticleAcceptance(It.IsAny <WriteoffWaybill>()))
            .Returns(new List <OutgoingWaybillRowSourceReservationInfo>()
            {
                new OutgoingWaybillRowSourceReservationInfo(row.Id, 1, 1)
            });
            articleMovementService.Setup(x => x.AcceptArticles(It.IsAny <WriteoffWaybill>()))
            .Returns(new List <OutgoingWaybillRowSourceReservationInfo>()
            {
                new OutgoingWaybillRowSourceReservationInfo(row.Id, 1, 1)
            });
        }
Beispiel #22
0
        public void Save(DealQuota dealQuota, User user)
        {
            CheckDealQuotaNameUniqueness(dealQuota);

            dealQuotaRepository.Save(dealQuota);
        }
Beispiel #23
0
        public void Delete(DealQuota entity)
        {
            entity.DeletionDate = DateTime.Now;

            CurrentSession.SaveOrUpdate(entity);
        }
Beispiel #24
0
        public void Init()
        {
            // инициализация IoC
            IoCInitializer.Init();

            setting = new Setting()
            {
                UseReadyToAcceptStateForExpenditureWaybill = false
            };
            settingRepository = Mock.Get(IoCContainer.Resolve <ISettingRepository>());
            settingRepository.Setup(x => x.Get()).Returns(setting);

            storage = new Storage("qwe", StorageType.ExtraStorage)
            {
                Id = 42
            };
            accOrgSender = new Mock <AccountOrganization>();
            accOrgSender.Setup(x => x.Id).Returns(1);
            accOrgRecipient = new Mock <AccountOrganization>();
            accOrgRecipient.Setup(x => x.Id).Returns(2);

            valueAddedTax = new ValueAddedTax();
            user          = new Mock <User>();
            user.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);
            createdBy = new Mock <User>();
            createdBy.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);
            acceptedBy = new Mock <User>();
            acceptedBy.Setup(x => x.GetPermissionDistributionType(It.IsAny <Permission>())).Returns(PermissionDistributionType.All);

            var articleGroup = new ArticleGroup("Тестовая группа", "Тестовая группа");
            var measureUnit  = new MeasureUnit("шт.", "Штука", "123", 0)
            {
                Id = 1
            };

            articleA = new Article("Тестовый товар A", articleGroup, measureUnit, true)
            {
                Id = 1
            };

            receiptWaybillRow = new Mock <ReceiptWaybillRow>();
            receiptWaybillRow.Setup(x => x.Article).Returns(articleA);

            articleAccountingPrice = new List <ArticleAccountingPrice>()
            {
                new ArticleAccountingPrice(articleA, 100)
            };

            expenditureWaybillRepository = Mock.Get(IoCContainer.Resolve <IExpenditureWaybillRepository>());
            articleRepository            = Mock.Get(IoCContainer.Resolve <IArticleRepository>());
            articlePriceService          = Mock.Get(IoCContainer.Resolve <IArticlePriceService>());
            articlePriceService.Setup(x => x.GetArticleAccountingPrices(It.Is <short>(y => y == storage.Id), It.IsAny <IEnumerable <int> >())).Returns(articleAccountingPrice);
            articlePriceService.Setup(x => x.GetArticleAccountingPrices(It.Is <short>(y => y == storage.Id), It.IsAny <ISubQuery>(), It.IsAny <DateTime>())).Returns(articleAccountingPrice);

            articleAvailabilityService = Mock.Get(IoCContainer.Resolve <IArticleAvailabilityService>());

            articleMovementService = Mock.Get(IoCContainer.Resolve <IArticleMovementService>());

            receiptWaybillService = Mock.Get(IoCContainer.Resolve <IReceiptWaybillService>());

            articleRevaluationService = Mock.Get(IoCContainer.Resolve <IArticleRevaluationService>());

            factualFinancialArticleMovementService = new Mock <IFactualFinancialArticleMovementService>();

            articleMovementOperationCountService = new Mock <IArticleMovementOperationCountService>();

            teamRepository = Mock.Get(IoCContainer.Resolve <ITeamRepository>());

            dealRepository = Mock.Get(IoCContainer.Resolve <IDealRepository>());

            expenditureWaybillIndicatorService = Mock.Get(IoCContainer.Resolve <IExpenditureWaybillIndicatorService>());

            dealPaymentDocumentDistributionService = Mock.Get(IoCContainer.Resolve <IDealPaymentDocumentDistributionService>());

            blockingService = Mock.Get(IoCContainer.Resolve <IBlockingService>());

            articleSaleService                = Mock.Get(IoCContainer.Resolve <IArticleSaleService>());
            teamService                       = Mock.Get(IoCContainer.Resolve <ITeamService>());
            dealService                       = Mock.Get(IoCContainer.Resolve <IDealService>());
            dealIndicatorService              = Mock.Get(IoCContainer.Resolve <IDealIndicatorService>());
            clientContractIndicatorService    = Mock.Get(IoCContainer.Resolve <IClientContractIndicatorService>());
            returnFromClientWaybillRepository = new Mock <IReturnFromClientWaybillRepository>();

            expenditureWaybillService = new ExpenditureWaybillService(settingRepository.Object, expenditureWaybillRepository.Object, teamRepository.Object,
                                                                      Mock.Get(IoCContainer.Resolve <IStorageRepository>()).Object, Mock.Get(IoCContainer.Resolve <IUserRepository>()).Object,
                                                                      dealRepository.Object, articlePriceService.Object, expenditureWaybillIndicatorService.Object, articleMovementService.Object,
                                                                      dealPaymentDocumentDistributionService.Object, blockingService.Object, articleSaleService.Object,
                                                                      factualFinancialArticleMovementService.Object, articleMovementOperationCountService.Object, teamService.Object, dealService.Object,
                                                                      dealIndicatorService.Object, clientContractIndicatorService.Object, articleAvailabilityService.Object,
                                                                      receiptWaybillService.Object, articleRevaluationService.Object, returnFromClientWaybillRepository.Object);

            deal                = new Mock <Deal>();
            quota               = new DealQuota("asd", 10, 45, 15000);
            team                = new Mock <Team>();
            contract            = new Mock <ClientContract>();
            accountOrganization = new Mock <AccountOrganization>();
            deal.Setup(x => x.IsActive).Returns(true);
            deal.Setup(x => x.IsClosed).Returns(false);
            deal.Setup(x => x.Quotas).Returns(new List <DealQuota> {
                quota
            });
            deal.Setup(x => x.Contract).Returns(contract.Object);
            accountOrganization.Setup(x => x.Storages).Returns(new List <Storage> {
                storage
            });
            contract.Setup(x => x.AccountOrganization).Returns(accountOrganization.Object);

            waybill = new ExpenditureWaybill("123", DateTime.Now, storage, deal.Object, team.Object, quota, false, user.Object, DeliveryAddressType.CustomAddress, "qwe", DateTime.Now, createdBy.Object);

            var row = new ExpenditureWaybillRow(receiptWaybillRow.Object, 10, valueAddedTax);

            waybill.AddRow(row);

            articleMovementService.Setup(x => x.CancelArticleAcceptance(It.IsAny <ExpenditureWaybill>()))
            .Returns(new List <OutgoingWaybillRowSourceReservationInfo>()
            {
                new OutgoingWaybillRowSourceReservationInfo(row.Id, 1, 1)
            });
            articleMovementService.Setup(x => x.AcceptArticles(It.IsAny <ExpenditureWaybill>()))
            .Returns(new List <OutgoingWaybillRowSourceReservationInfo>()
            {
                new OutgoingWaybillRowSourceReservationInfo(row.Id, 1, 1)
            });
        }