/// <summary>
        /// Проводка накладной
        /// </summary>
        /// <param name="changeOwnerWaybill"></param>
        public void Accept(ChangeOwnerWaybill waybill, User user, DateTime currentDateTime)
        {
            // регулярная проверка - появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

            CheckPossibilityToAccept(waybill, user);

            // получение текущих позиций реестров цен
            var priceLists = articlePriceService.GetArticleAccountingPrices(waybill.Storage.Id,
                                                                            changeOwnerWaybillRepository.GetArticlesSubquery(waybill.Id), currentDateTime);

            waybill.Accept(priceLists, UseReadyToAcceptState, user, currentDateTime);

            // резервирование товаров при проводке
            var reservationInfoList = articleMovementService.AcceptArticles(waybill);

            // Пересчет показателей входящего и исходящего проведенного наличия
            articleAvailabilityService.ChangeOwnerWaybillAccepted(waybill, reservationInfoList);

            changeOwnerWaybillRepository.Save(waybill);

            if (waybill.State == ChangeOwnerWaybillState.ReadyToChangeOwner) //Если накладная готова к смене собственника, ...
            {
                ChangeOwner(waybill, currentDateTime);                       // ... то меняем собственника накладной
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Проводка накладной
        /// </summary>
        /// <param name="waybill"></param>
        public void Accept(WriteoffWaybill waybill, User user, DateTime currentDateTime)
        {
            // регулярная проверка - не появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

            CheckPossibilityToAccept(waybill, user);

            // получение текущих позиций реестров цен
            var senderPriceLists = articlePriceService.GetArticleAccountingPrices(waybill.SenderStorage.Id,
                                                                                  writeoffWaybillRepository.GetArticlesSubquery(waybill.Id), currentDateTime);

            // проводим накладную
            waybill.Accept(senderPriceLists, UseReadyToAcceptState, user, currentDateTime);

            // резервирование товаров при проводке
            var reservationInfoList = articleMovementService.AcceptArticles(waybill);

            // Пересчет показателей исходящего проведенного наличия
            articleAvailabilityService.WriteoffWaybillAccepted(waybill, reservationInfoList);
        }