/// <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); }
/// <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); }