예제 #1
0
        /// <summary>
        /// Отмена приемки
        /// </summary>
        public virtual void CancelReceipt(MovementWaybill waybill, User user, DateTime currentDateTime)
        {
            // регулярная проверка - не появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

            CheckPossibilityToCancelReceipt(waybill, user);

            // Пересчет показателей точного и проведенного наличия
            articleAvailabilityService.MovementWaybillReceiptCanceled(waybill,
                                                                      articleMovementService.GetOutgoingWaybillRows(movementWaybillRepository.GetRowsSubQuery(waybill.Id)));

            // пересчет показателей переоценки
            articleRevaluationService.MovementWaybillReceiptCancelled(waybill);

            // пересчет финансовых показателей
            factualFinancialArticleMovementService.MovementWaybillReceiptCancelled(waybill);

            //Пересчитываем счетчики количеств операций
            articleMovementOperationCountService.WaybillFinalizationCancelled(waybill);

            waybill.CancelReceipt();

            articleMovementService.CancelArticleFinalMoving(waybill);

            movementWaybillRepository.Save(waybill);

            articleMovementService.UpdateOutgoingWaybillsStates(waybill, waybill.ReceiptDate);
        }
예제 #2
0
        public void CancelWriteoff(WriteoffWaybill waybill, User user, DateTime currentDateTime)
        {
            // регулярная проверка - не появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

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

            CheckPossibilityToCancelWriteoff(waybill, user);

            // пересчет финансовых показателей
            factualFinancialArticleMovementService.WriteoffWaybillWriteoffCancelled(waybill);

            // пересчитываем счетчики количеств операций
            articleMovementOperationCountService.WaybillFinalizationCancelled(waybill);

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

            // отменяем списание
            waybill.CancelWriteoff();

            // помечаем товар как проведенный
            articleMovementService.CancelArticleFinalMoving(waybill);
        }
        /// <summary>
        /// Отмена смены собственника (отмена отгрузки)
        /// </summary>
        /// <param name="waybill"></param>
        private void CancelOwnerChange(ChangeOwnerWaybill waybill, DateTime currentDateTime)
        {
            // регулярная проверка - появились ли РЦ для переоценки
            articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime);

            waybill.CheckPossibilityToCancelOwnerChange();

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

            changeOwnerWaybillRepository.Save(waybill);

            // пересчет показателей переоценки
            articleRevaluationService.ChangeOwnerWaybillReceiptCancelled(waybill);

            waybill.ChangeOwnerDate = null; //Сбрасываем дату смены собственника

            articleMovementService.CancelArticleFinalMoving(waybill);

            // TODO: добавить пересчет финансовых показателей и счетчиков операций

            changeOwnerWaybillRepository.Save(waybill);

            articleMovementService.UpdateOutgoingWaybillsStates(waybill, waybill.ChangeOwnerDate);
        }