/// <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); // ... то меняем собственника накладной } }
/// <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); }