コード例 #1
0
        public Guid Save(ReturnFromClientWaybill returnFromClientWaybill)
        {
            // если номер генерируется автоматически
            if (returnFromClientWaybill.Number == "")
            {
                var lastDocumentNumbers = returnFromClientWaybill.Recipient.GetLastDocumentNumbers(returnFromClientWaybill.Date.Year);
                var number = lastDocumentNumbers.ReturnFromClientWaybillLastNumber + 1;

                // пока не найдем уникальный номер
                while (!IsNumberUnique(number.ToString(), Guid.Empty, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient))
                {
                    number = number + 1;
                }

                returnFromClientWaybill.Number = number.ToString();
                lastDocumentNumbers.ReturnFromClientWaybillLastNumber = number;
            }
            else
            {
                ValidationUtils.Assert(IsNumberUnique(returnFromClientWaybill.Number, returnFromClientWaybill.Id, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient),
                                       String.Format("Накладная с номером {0} уже существует. Укажите другой номер.", returnFromClientWaybill.Number));
            }

            //Проверяем имеет ли указанная команда реализации в указанной сделке
            var teamList = dealRepository.GetTeamListFromSales(returnFromClientWaybill.Deal.Id);

            ValidationUtils.Assert(teamList.Contains(returnFromClientWaybill.Team),
                                   String.Format("Команда «{0}» не имеет реализаций в сделке «{1}».", returnFromClientWaybill.Team.Name, returnFromClientWaybill.Deal.Name));

            returnFromClientWaybillRepository.Save(returnFromClientWaybill);

            return(returnFromClientWaybill.Id);
        }