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

            CheckPossibilityToCancelAcceptance(waybill, user);

            var acceptanceDate = waybill.AcceptanceDate.Value;

            if (waybill.IsOwnerChanged) //Если накладная отгружена, то ...
            {
                // ... при отмене проводки сначала выполняем отмену отгрузки
                CancelOwnerChange(waybill, currentDateTime);
            }

            changeOwnerWaybillRepository.Save(waybill);

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

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

            // отменяем проводку
            waybill.CancelAcceptance(UseReadyToAcceptState);

            changeOwnerWaybillRepository.Save(waybill);

            // удаление связей и пересчет проведенной переоценки
            articleRevaluationService.ChangeOwnerWaybillAcceptanceCancelled(waybill);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Отмена проводки накладной
        /// </summary>
        /// <param name="waybill"></param>
        public void CancelAcceptance(WriteoffWaybill waybill, User user, DateTime currentDateTime)
        {
            // регулярная проверка - не появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

            CheckPossibilityToCancelAcceptance(waybill, user);

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

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

            waybill.CancelAcceptance(UseReadyToAcceptState);

            // удаление связей и пересчет проведенной переоценки
            articleRevaluationService.WriteoffWaybillAcceptanceCancelled(waybill);
        }