/// <summary> /// Отмена приемки накладной /// </summary> /// <param name="waybill">Накладная</param> public void CancelReceipt(ReturnFromClientWaybill waybill, User user, DateTime currentDateTime) { // регулярная проверка - появились ли РЦ для переоценки articleRevaluationService.CheckAccountingPriceListWithoutCalculatedRevaluation(currentDateTime); CheckPossibilityToCancelReceipt(waybill, user); // Пересчет показателей входящего проведенного и точного наличия articleAvailabilityService.ReturnFromClientWaybillReceiptCanceled(waybill, articleMovementService.GetOutgoingWaybillRows(returnFromClientWaybillRepository.GetRowsSubQuery(waybill.Id))); // пересчет показателей возвратов от клиента returnFromClientService.ReturnFromClientWaybillFinalizationCancelled(waybill); // пересчет показателей переоценки articleRevaluationService.ReturnFromClientWaybillReceiptCancelled(waybill); // пересчет финансового показателя factualFinancialArticleMovementService.ReturnFromClientWaybillReceiptCancelled(waybill); // Пересчитываем счетчики количеств операций articleMovementOperationCountService.WaybillFinalizationCancelled(waybill); var receiptDate = waybill.ReceiptDate.Value; //Сохраняем дату принятия для индикаторов waybill.CancelReceipt(); returnFromClientWaybillRepository.Save(waybill); // Отменяем возврат оплаты по возвращенным позициям dealPaymentDocumentDistributionService.CancelPaymentReturnToSales(waybill, receiptDate); returnFromClientWaybillRepository.Save(waybill); //для того, чтобы сохранились изменения в оплатах // Обновляем признак полной оплаты для реализаций UpdateFullyPaidPropertyForSales(waybill); returnFromClientWaybillRepository.Save(waybill); articleMovementService.UpdateOutgoingWaybillsStates(waybill, waybill.ReceiptDate); }