public void CheckPossibilityToDeleteRow(WriteoffWaybillRow waybillRow, User user) { // права CheckPermissionToPerformOperation(waybillRow.WriteoffWaybill, user, Permission.WriteoffWaybill_Delete_Row_Delete); // сущность waybillRow.CheckPossibilityToDelete(); }
/// <summary> /// Расчет основных показателей для одной позиции накладной списания /// </summary> public WriteoffWaybillRowMainIndicators GetMainRowIndicators(WriteoffWaybillRow row, User user) { return(GetMainIndicatorsForRowList(row.WriteoffWaybill, new List <WriteoffWaybillRow>() { row }, articleRepository.GetArticleSubQuery(row.Article.Id), user)[row.Id]); }
public void WriteoffWaybill_Attempt_To_PrepareToAccept_Must_Set_ReadyToAcceptState() { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.PrepareToAccept(); Assert.AreEqual(WriteoffWaybillState.ReadyToAccept, writeoffWaybill.State); }
public void WriteoffWaybill_Attempt_To_Accept_From_Draft_If_Use_ReadyToAcceptState_Is_Access_Must_Be_Ok() { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.Accept(priceLists, false, user, DateTime.Now); Assert.AreNotEqual(WriteoffWaybillState.Draft, writeoffWaybill.State); }
public void WriteoffWaybill_Last_Row_Deletion_Must_Be_Ok() { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.DeleteRow(writeoffWaybillRow); Assert.AreEqual(0, writeoffWaybill.RowCount); Assert.AreEqual(WriteoffWaybillState.Draft, writeoffWaybill.State); }
public void DeleteRow(WriteoffWaybill waybill, WriteoffWaybillRow row, User user) { CheckPossibilityToDeleteRow(row, user); if (row.IsUsingManualSource) { articleMovementService.ResetManualSources(row); } waybill.DeleteRow(row); }
public void WriteoffWaybill_Attempt_To_CancelReadinessToAccept_Must_Set_DraftState() { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.PrepareToAccept(); writeoffWaybill.CancelReadinessToAccept(); Assert.AreEqual(WriteoffWaybillState.Draft, writeoffWaybill.State); }
public void WriteoffWaybill_Attempt_To_CancelAcceptance_If_Use_ReadyToAcceptState_Is_Denied_Must_Set_ReadyToAcceptState() { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.Accept(priceLists, false, user, DateTime.Now); writeoffWaybill.CancelAcceptance(true); Assert.AreEqual(WriteoffWaybillState.ReadyToAccept, writeoffWaybill.State); }
public bool IsPossibilityToDeleteRow(WriteoffWaybillRow waybillRow, User user) { try { CheckPossibilityToDeleteRow(waybillRow, user); return(true); } catch { return(false); } }
private void AddRowLocal(WriteoffWaybill waybill, WriteoffWaybillRow row, IEnumerable <WaybillRowManualSource> sourceDistributionInfo, User user) { CheckPossibilityToEdit(waybill, user); waybill.AddRow(row); writeoffWaybillRepository.Save(waybill); if (sourceDistributionInfo != null) { articleMovementService.SetManualSources(row, sourceDistributionInfo); } }
public void WriteoffWaybillRow_If_WritingoffCount_Is_Null_On_Creation_Must_Throw() { try { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, -50); Assert.Fail("Исключение не вызвано."); } catch (Exception ex) { Assert.AreEqual("Количество списываемого товара должно быть положительным числом.", ex.Message); } }
public void WriteoffWaybillRow_If_ReceiptWaybillRow_Is_Null_On_Creation_Must_Throw() { try { var writeoffWaybillRow = new WriteoffWaybillRow(null, 50); Assert.Fail("Исключение не вызвано."); } catch (Exception ex) { Assert.AreEqual("Не указана партия товара.", ex.Message); } }
public void WriteoffWaybill_Repeat_By_Batch_And_Article_Row_Addition_Must_Throw_Exception() { try { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.AddRow(writeoffWaybillRow); Assert.Fail("Исключение не вызвано."); } catch (Exception ex) { Assert.AreEqual("Позиция накладной по данной партии и товару уже добавлена.", ex.Message); } }
public void WriteoffWaybill_RePrepareToAccept_Must_Throw_Exception() { try { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.PrepareToAccept(); writeoffWaybill.PrepareToAccept(); } catch (Exception ex) { Assert.AreEqual("Невозможно подготовить к проводке накладную со статусом «Готово к проводке».", ex.Message); } }
/// <summary> /// Упрощенное добавление позиции в накладную /// </summary> /// <param name="waybill">Накладная</param> /// <param name="article">Товар</param> /// <param name="count">Кол-во резервируемого товара</param> /// <param name="user">Пользователь</param> public void AddRowSimply(WriteoffWaybill waybill, Article article, decimal count, User user) { CheckPossibilityToEdit(waybill, user); // распределяем кол-во товара по партиям var countDistributionInfo = DistributeCountByBatches(article, waybill.SenderStorage, waybill.Sender, count); var batchList = receiptWaybillService.GetRows(countDistributionInfo.Keys); foreach (var item in countDistributionInfo) { var batch = batchList[item.Key]; var row = new WriteoffWaybillRow(batch, item.Value); AddRow(waybill, row, user); } }
public void WriteoffWaybill_Attempt_To_Accept_From_Draft_If_Use_ReadyToAcceptState_Is_Denied_Must_Throw_Exception() { try { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.Accept(priceLists, true, user, DateTime.Now); Assert.Fail("Исключение не вызвано."); } catch (Exception ex) { Assert.AreEqual(String.Format("Невозможно провести накладную из состояния «{0}».", writeoffWaybill.State.GetDisplayName()), ex.Message); } }
public void WriteoffWaybill_Attempt_To_Writeoff_If_Not_ReadyToWriteoff_Must_Throw_Exception() { try { var writeoffWaybillRow = new WriteoffWaybillRow(receiptWaybillRow, 50); writeoffWaybill.AddRow(writeoffWaybillRow); writeoffWaybill.Accept(priceLists, false, user, DateTime.Now); writeoffWaybill.Writeoff(user, DateTime.Now); Assert.Fail("Исключение не вызвано."); } catch (Exception ex) { Assert.AreEqual(String.Format("Невозможно списать товары по накладной со статусом «{0}».", writeoffWaybill.State.GetDisplayName()), ex.Message); } }
public OutgoingWaybillRow ConvertToOutgoingWaybillRow(WriteoffWaybillRow row) { return(new OutgoingWaybillRow() { Batch = row.ReceiptWaybillRow, Count = row.WritingoffCount, Id = row.Id, Sender = row.WriteoffWaybill.Sender, SenderStorage = row.WriteoffWaybill.SenderStorage, State = row.OutgoingWaybillRowState, Type = WaybillType.WriteoffWaybill, WaybillDate = row.WriteoffWaybill.Date, WaybillId = row.WriteoffWaybill.Id, WaybillNumber = row.WriteoffWaybill.Number, SenderAccountingPrice = row.SenderArticleAccountingPrice != null ? row.SenderArticleAccountingPrice.AccountingPrice : 0, AreSourcesDetermined = row.AreSourcesDetermined, AcceptanceDate = row.WriteoffWaybill.AcceptanceDate, FinalizationDate = row.WriteoffWaybill.WriteoffDate }); }
public void SaveRow(WriteoffWaybillRow entity) { CurrentSession.SaveOrUpdate(entity); }
public void SaveRow(WriteoffWaybill waybill, WriteoffWaybillRow row, User user) { SaveRowLocal(waybill, row, null, user); }
public void SaveRow(WriteoffWaybill waybill, WriteoffWaybillRow row, IEnumerable <WaybillRowManualSource> sourceDistributionInfo, User user) { SaveRowLocal(waybill, row, sourceDistributionInfo, user); }
public void Init() { // инициализация IoC IoCInitializer.Init(); setting = new Setting() { UseReadyToAcceptStateForWriteOffWaybill = 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) }; writeoffWaybillRepository = Mock.Get(IoCContainer.Resolve <IWriteoffWaybillRepository>()); 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>(); storageRepository = Mock.Get(IoCContainer.Resolve <IStorageRepository>()); userRepository = Mock.Get(IoCContainer.Resolve <IUserRepository>()); writeoffWaybillService = new WriteoffWaybillService(settingRepository.Object, writeoffWaybillRepository.Object, storageRepository.Object, userRepository.Object, articleMovementService.Object, articlePriceService.Object, factualFinancialArticleMovementService.Object, articleMovementOperationCountService.Object, articleAvailabilityService.Object, receiptWaybillService.Object, articleRevaluationService.Object); waybill = new WriteoffWaybill("123", DateTime.Now, storage, accOrgSender.Object, new WriteoffReason(), user.Object, createdBy.Object, DateTime.Now); WriteoffWaybillRow row = new WriteoffWaybillRow(receiptWaybillRow.Object, 10); waybill.AddRow(row); 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) }); }