/// <summary> /// Заполняем модель для создания/редактирования акта по указанному. /// </summary> /// <param name="Id">Значение ID акт.</param> /// <param name="GCID">Занчение ID договора.</param> /// <param name="hasError">Признак ошибки.</param> /// <returns></returns> public GpdActEditModel SetActEditModel(int Id, int GCID, bool hasError) { GpdActEditModel model = new GpdActEditModel(); GetPermission(model); UserRole role = CurrentUser.UserRole; IList<GpdActDto> document = null; //создание нового акта if (Id == 0) document = GpdActDao.GetNewAct(role, GCID); else //редактирование существующего document = GpdActDao.GetAct(role, CurrentUser.Id, Id, false, model.DateBegin, model.DateEnd, 0, 0, null, 0,null,0, null,"", 0, false); if (document.Count > 0) { foreach (var doc in document) { model.Id = doc.Id; model.ActDate = doc.ActDate; model.ActNumber = (Id == 0 ? doc.NumContract.ToString() + "/" + doc.GCCount.ToString() : doc.ActNumber); model.Surname = doc.Surname; model.NameContract = doc.NameContract; model.NumContract = doc.NumContract;// +(doc.ContractBeginDate.HasValue && doc.ContractEndDate.HasValue ? " с " + doc.ContractBeginDate.Value.ToShortDateString() + " по " + doc.ContractEndDate.Value.ToShortDateString() : ""); model.ContractBeginDate = doc.ContractBeginDate; model.ContractEndDate = doc.ContractEndDate; model.DepLevel3Name = doc.DepLevel3Name; model.DepLevel7Name = doc.DepLevel7Name; model.ChargingDate = doc.ChargingDate; model.DateBegin = doc.DateBegin; model.DateEnd = doc.DateEnd; model.Amount = doc.Amount; model.AmountPayment = doc.AmountPayment; model.POrderDate = doc.POrderDate; model.PurposePayment = doc.PurposePayment; model.ESSSNum = doc.ESSSNum; model.Autor = doc.CreatorName + (doc.CreateDate.HasValue ? " - " + doc.CreateDate.Value.ToShortDateString() + " - " + doc.CreateDate.Value.ToShortTimeString() : ""); model.StatusName = doc.StatusName; model.StatusID = doc.StatusID; model.GCID = doc.GCID; model.CreatorID = doc.CreatorID; //плательщик model.PayerID = doc.PayerID; model.PayeeName = doc.PayeeName; model.PayerINN = doc.PayerINN; model.PayerKPP = doc.PayerKPP; model.PayerAccount = doc.PayerAccount; model.PayerBankName = doc.PayerBankName; model.PayerBankBIK = doc.PayerBankBIK; model.PayerCorrAccount = doc.PayerCorrAccount; //получатель model.PayeeID = doc.PayeeID; model.PayerName = doc.PayerName; model.PayeeINN = doc.PayeeINN; model.PayeeKPP = doc.PayeeKPP; model.PayeeAccount = doc.PayeeAccount; model.PayeeBankName = doc.PayeeBankName; model.PayeeBankBIK = doc.PayeeBankBIK; model.PayeeCorrAccount = doc.PayeeCorrAccount; model.PAccountID = doc.PAccountID; model.Account = doc.Account; } } model.Comments = GpdActDao.GetComments(model.Id); return model; }
public ActionResult GpdActEdit(GpdActEditModel model) { bool hasError = false; ModelState.Clear(); int StatusID = model.StatusID; if (model.Operation == 1) { //model = GpdBl.SetGpdContractEdit(model.Id, model.PersonID, model.DepartmentId, model.DepartmentName); model = GpdBl.SetActEditModel(model); return View(model); } if (!model.IsCancel) { GpdBl.CheckFillFieldsForGpdAct(model, ModelState); model = GpdBl.SetActEditModel(model); } if (ModelState.Count != 0) { model.StatusID = 4; return View(model); } else { string error; if (GpdBl.SaveGpdAct(model, out error)) { //model = GpdBl.SetActEditModel(model.Id, model.GCID, hasError); string Message = StatusID == 4 ? "Черновик вашего документа сохранен!" : (StatusID == 2 ? "Ваш документ успешно сохранен!" : "Занесение вашего документа отменено!"); //ModelState.AddModelError("errorMessage", Message); return RedirectToAction("GpdActEdit", "GPD", new { Id = model.Id, GCID = 0, Msg = Message });//View(model); //return View(model); } else { if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("errorMessage", error); model = GpdBl.SetActEditModel(model.Id, model.GCID, hasError); return View(model); } } }
/// <summary> /// Проверки при сохранении акта ГПД. /// </summary> /// <param name="model">Модель.</param> /// <param name="ms">Словарь.</param> public void CheckFillFieldsForGpdAct(GpdActEditModel model, System.Web.Mvc.ModelStateDictionary ms) { GetPermission(model); if (model.StatusID == 4) { if (model.DateBegin == null) ms.AddModelError("DateBegin", "Укажите начало периода оплаты!"); if (model.DateEnd == null) ms.AddModelError("DateEnd", "Укажите конец периода оплаты!"); return; } if (model.ActDate == null) ms.AddModelError("ActDate", "Укажите дату акта!"); else { if (model.ActDate < model.ContractBeginDate || model.ActDate > model.ContractEndDate) ms.AddModelError("ActDate", "Дата акта должна входить в период действия договора!"); } if (model.ChargingDate == null) ms.AddModelError("ChargingDate", "Укажите дату начисления!"); if (model.DateBegin == null) ms.AddModelError("DateBegin", "Укажите начало периода оплаты!"); if (model.DateEnd == null) ms.AddModelError("DateEnd", "Укажите конец периода оплаты!"); if (model.DateBegin != null && model.DateEnd != null) { if (model.DateBegin < model.ContractBeginDate || model.DateBegin > model.ContractEndDate) ms.AddModelError("DateBegin", "Дата начала срока оплаты должна входить в период действия договора!"); if (model.DateEnd < model.ContractBeginDate || model.DateEnd > model.ContractEndDate) ms.AddModelError("DateEnd", "Дата конца срока оплаты должна входить в период действия договора!"); if (model.DateBegin > model.DateEnd) ms.AddModelError("DateBegin", "Дата начала срока оплаты должна быть меньше даты конца срока оплаты!"); } if (model.Amount < 0) ms.AddModelError("Amount", "Сумма не должна быть меньше нуля!"); if (model.Amount == 0) ms.AddModelError("Amount", "Сумма не должна быть равна нулю!"); if (model.PurposePayment == null) ms.AddModelError("PurposePayment", "Укажите Назначение договора!"); if (model.PurposePayment != null && model.PurposePayment.Length > 210) ms.AddModelError("PurposePayment", "Первышено количество символов!"); if (model.ESSSNum == null) ms.AddModelError("ESSSNum", "Укажите № заявки ЭССС!"); else { try { Convert.ToInt32(model.ESSSNum); } catch { ms.AddModelError("ESSSNum", "№ заявки ЭССС является числовым полем!"); } } }
/// <summary> /// Процедура сохранения акта в базе данных. /// </summary> /// <param name="model">Текущая модель.</param> /// <param name="error">Переменная для возврата текста сообщения об ошибке.</param> public bool SaveGpdAct(GpdActEditModel model, out string error) { error = string.Empty; //к текущему договору не должны повторяться номера актов if (GpdActDao.ExistsActsByNumber(model.Id, model.GCID, model.ActNumber)) { error = "К данному договору уже существует акт с таким номером!"; if (model.Id == 0) error += " Повторите попытку создания акта!"; else error += " Попробуйте найти акт к данному договору и с таким номером в реестре!"; return false; } //договор не должен быть в статусе черновика if (model.StatusID != 4 && !GpdActDao.CheckContractEntry(model.GCID)) { error = "Нельзя подготовить акт к выгрузке, так как договор для данного акта имеет статус черновика!"; return false; } UserRole currentUserRole = AuthenticationService.CurrentUser.UserRole; IUser currentUseId = AuthenticationService.CurrentUser; try { GpdAct gpdAct;// = GpdContractDao.Get(model.Id); if (model.Id == 0) { gpdAct = new GpdAct { CreatorID = currentUseId.Id, //EditDate = DateTime.Now, //EditorID = currentUseId.Id, ActNumber = model.ActNumber, ActDate = model.ActDate, GCID = model.GCID, ChargingDate = model.ChargingDate, DateBegin = model.DateBegin, DateEnd = model.DateEnd, Amount = model.Amount, PurposePayment = model.PurposePayment, ESSSNum = model.ESSSNum, StatusID = model.StatusID }; } else { gpdAct = GpdActDao.Get(model.Id); gpdAct.CreatorID = model.CreatorID; gpdAct.EditDate = DateTime.Now; gpdAct.EditorID = currentUseId.Id; gpdAct.ActNumber = model.ActNumber; gpdAct.ActDate = model.ActDate; gpdAct.GCID = model.GCID; gpdAct.ChargingDate = model.ChargingDate; gpdAct.DateBegin = model.DateBegin; gpdAct.DateEnd = model.DateEnd; gpdAct.Amount = model.Amount; gpdAct.PurposePayment = model.PurposePayment; gpdAct.ESSSNum = model.ESSSNum; gpdAct.StatusID = model.StatusID; } AddComment(gpdAct, model); //добавление комментария GpdActDao.SaveAndFlush(gpdAct); model.Id = gpdAct.Id; return true; } catch (Exception ex) { GpdContractDao.RollbackTran(); Log.Error("Error on SaveMissionOrderEditModel:", ex); error = string.Format("Исключение:{0}", ex.GetBaseException().Message); return false; } finally { //SetUserInfoModel(user, model); //SetStaticFields(model, missionHotels); //LoadDictionaries(model); //SetHiddenFields(model); } }
/// <summary> /// Определяем права роли текущего пользователя. /// </summary> /// <param name="model"></param> public void GetPermission(GpdActEditModel model) { UserRole role = CurrentUser.UserRole; model.Permissions = GpdActDao.GetPermission(role); // if (model.Permissions.Count == 0) { GpdPermissionDto perm = new GpdPermissionDto(); perm.IsCancel = false; perm.IsComment = false; perm.IsCreate = false; perm.IsCreateAct = false; perm.IsDraft = false; perm.IsWrite = false; model.Permissions.Add(perm); } }
/// <summary> /// Добавляем комментарий. /// </summary> /// <param name="entity">Редактируемый акт.</param> /// <param name="model">Модель редактируемого акта.</param> protected void AddComment(GpdAct entity, GpdActEditModel model) { if (model.CommentStr != null && model.CommentStr.Trim().Length != 0) { GpdActComment ActComment = new GpdActComment { UserId = UserDao.Load(AuthenticationService.CurrentUser.Id), Comment = model.CommentStr, CreateDate = DateTime.Now, GpdActs = entity }; entity.Comments.Add(ActComment); } }
/// <summary> /// Заполняем модель при отправке из поля с автозаполнением. /// </summary> /// <param name="model">Обрабатываемая модель с частично заполненными полями</param> /// <returns></returns> public GpdActEditModel SetActEditModel(GpdActEditModel model) { UserRole role = CurrentUser.UserRole; GetPermission(model); //IList<GpdActDto> document = null; model.errorMessage = ""; model.Comments = GpdActDao.GetComments(model.Id); //плательщик if (model.PayerID != 0) { IList<GpdContractDetailDto> Details = GetDetailsAutocomplete(null, model.PayerID); if (Details.Count != 0) { foreach (var doc in Details) { model.PayerName = doc.Name; model.PayerINN = doc.INN; model.PayerKPP = doc.KPP; model.PayerAccount = doc.Account; model.PayerBankName = doc.BankName; model.PayerBankBIK = doc.BankBIK; model.PayerCorrAccount = doc.CorrAccount; } } } //получатель if (model.PayeeID != 0) { IList<GpdContractDetailDto> Details = GetDetailsAutocomplete(null, model.PayeeID); if (Details.Count != 0) { foreach (var doc in Details) { model.PayeeName = doc.Name; model.PayeeINN = doc.INN; model.PayeeKPP = doc.KPP; model.PayeeAccount = doc.Account; model.PayeeBankName = doc.BankName; model.PayeeBankBIK = doc.BankBIK; model.PayeeCorrAccount = doc.CorrAccount; } } } //лицевой счет if (model.PAccountID != 0) { IList<GpdContractDetailDto> Details = GetDetailsAutocomplete(null, model.PAccountID); if (Details.Count != 0) { foreach (var doc in Details) { model.Account = doc.PersonAccount; } } } return model; }