public ActionResult GpdRefDetailEdit(GpdRefDetailEditModel model) { ModelState.Clear(); if (model.StatusID != 2) { int PersonID = model.PersonID; model = GpdBl.SetRefDetailEditModel(model.Id, model.StatusID, model.Operation, false, model.DTID, model.PayerID, model.PayeeID, model.DetailId, model.PersonID); model.PersonID = PersonID; return View(model); } else { GpdBl.CheckFillFieldsForGpdRefDetail(model, ModelState, false); if (ModelState.Count != 0) return View(model); else { string error; if (GpdBl.SaveGpdRefDetail(model, out error)) { model = GpdBl.SetRefDetailEditModel(model.Id, model.StatusID, 0, false, model.DTID, model.PayerID, model.PayeeID, model.DetailId, model.PersonID); if (model.StatusID == 2) model.errorMessage = "Запись сохранена!"; return View(model); } else { if (!string.IsNullOrEmpty(error)) ModelState.AddModelError("errorMessage", error); return View(model); } } } }
/// <summary> /// Процедура сохранения записи в базе данных. /// </summary> /// <param name="model">Текущая модель.</param> /// <param name="error">Переменная для возврата текста сообщения об ошибке.</param> public bool SaveGpdRefDetail(GpdRefDetailEditModel model, out string error) { error = string.Empty; if (model.StatusID == 3) return true; //UserRole currentUserRole = AuthenticationService.CurrentUser.UserRole; IUser currentUseId = AuthenticationService.CurrentUser; //набор if (model.Operation == 1) { try { GpdDetailSet gpdDetailSet = GpdDetailSetDao.Get(model.Id); if (gpdDetailSet == null) { gpdDetailSet = new GpdDetailSet { Name = model.Name, PersonID = model.PersonID, PayerID = model.PayerID, PayeeID = model.PayeeID, Account = model.Account, CreatorID = currentUseId.Id, }; } else { gpdDetailSet.Name = model.Name; gpdDetailSet.PersonID = model.PersonID; gpdDetailSet.PayerID = model.PayerID; gpdDetailSet.PayeeID = model.PayeeID; gpdDetailSet.Account = model.Account; gpdDetailSet.CreatorID = model.CreatorID; gpdDetailSet.EditorID = currentUseId.Id; gpdDetailSet.EditDate = DateTime.Now; } GpdDetailSetDao.SaveAndFlush(gpdDetailSet); model.Id = gpdDetailSet.Id; model.StatusID = 2; return true; } catch (Exception ex) { GpdDetailSetDao.RollbackTran(); Log.Error("Error on SaveMissionOrderEditModel:", ex); error = string.Format("Исключение:{0}", ex.GetBaseException().Message); return false; } } else //реквизиты { try { GpdRefDetail gpdrefDetail = GpdRefDetailDao.Get(model.DetailId); if (model.NewRow == 1 || gpdrefDetail == null) { gpdrefDetail = new GpdRefDetail { Name = model.DetailName, //ContractorName = model //DTID = model.DTID, INN = model.INN, KPP = model.KPP, Account = model.DetailAccount, BankName = model.BankName, BankBIK = model.BankBIK, CorrAccount = model.CorrAccount, CreatorID = currentUseId.Id, }; } else { gpdrefDetail.Name = model.DetailName; //gpdrefDetail.DTID = model.DTID; gpdrefDetail.INN = model.INN; gpdrefDetail.KPP = model.KPP; gpdrefDetail.Account = model.DetailAccount; gpdrefDetail.BankName = model.BankName; gpdrefDetail.BankBIK = model.BankBIK; gpdrefDetail.CorrAccount = model.CorrAccount; gpdrefDetail.CreatorID = model.DetailCreatorID; gpdrefDetail.EditorID = currentUseId.Id; gpdrefDetail.EditDate = DateTime.Now; } GpdRefDetailDao.SaveAndFlush(gpdrefDetail); model.DetailId = gpdrefDetail.Id; model.StatusID = 2; return true; } catch (Exception ex) { GpdRefDetailDao.RollbackTran(); Log.Error("Error on SaveMissionOrderEditModel:", ex); error = string.Format("Исключение:{0}", ex.GetBaseException().Message); return false; } } }
/// <summary> /// Определяем права роли текущего пользователя. /// </summary> /// <param name="model"></param> public void GetPermission(GpdRefDetailEditModel model) { UserRole role = CurrentUser.UserRole; model.Permissions = GpdRefDetailDao.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="model">Проверяемая модель.</param> /// <param name="ms">Словарь для сообщений об ошибках.</param> /// <param name="flgFromContract">Признак проверки модели заполняемой в договорах.</param> public void CheckFillFieldsForGpdRefDetail(GpdRefDetailEditModel model, System.Web.Mvc.ModelStateDictionary ms, bool flgFromContract) { string ModelName = flgFromContract ? "DetailEdit." : ""; GetPermission(model); if (model.Operation == 1) { if (model.Name == null) ms.AddModelError(ModelName + "Name", "Заполните поле 'Наименование'!"); if (model.Name != null && model.Name.Trim().Length > 250) ms.AddModelError(ModelName + "Name", "Превышено допустимое количество символов!"); if (model.PersonID == 0) ms.AddModelError(ModelName + "PersonID", "Выберите физическое лицо!"); if (model.PayerID == 0) ms.AddModelError(ModelName + "PayerID", "Укажите плательщика!"); if (model.PayeeID == 0) ms.AddModelError(ModelName + "PayeeID", "Укажите получателя!"); if (model.Account == null) ms.AddModelError(ModelName + "Account", "Укажите номер счета получателя!"); if (model.Account != null && model.Account.Trim().Length > 20) ms.AddModelError(ModelName + "Account", "Превышено допустимое количество символов!"); } else { //if (model.DetailName == null) // ms.AddModelError(ModelName + "DetailName", "Заполните поле 'Наименование'"); //if (model.DetailName != null && model.DetailName.Trim().Length > 150) // ms.AddModelError(ModelName + "DetailName", "Превышено допустимое количество символов!"); //if (model.INN == null) // ms.AddModelError(ModelName + "INN", "Заполните поле 'ИНН'"); //if (model.INN != null && model.INN.Trim().Length > 12) // ms.AddModelError(ModelName + "INN", "Превышено допустимое количество символов!"); //if (model.KPP == null) // ms.AddModelError(ModelName + "KPP", "Заполните поле 'КПП'"); //if (model.KPP != null && model.KPP.Trim().Length > 9) // ms.AddModelError(ModelName + "KPP", "Превышено допустимое количество символов!"); //if (model.DetailAccount == null) // ms.AddModelError(ModelName + "DetailAccount", "Заполните поле 'Расчетный счет'"); //if (model.DetailAccount != null && model.DetailAccount.Trim().Length > 20) // ms.AddModelError(ModelName + "DetailAccount", "Превышено допустимое количество символов!"); //if (model.BankName == null) // ms.AddModelError(ModelName + "BankName", "Заполните поле 'Банк'"); //if (model.BankName != null && model.BankName.Trim().Length > 100) // ms.AddModelError(ModelName + "BankName", "Превышено допустимое количество символов!"); //if (model.BankBIK == null) // ms.AddModelError(ModelName + "BankBIK", "Заполните поле 'Банк БИК'"); //if (model.BankBIK != null && model.BankBIK.Trim().Length > 9) // ms.AddModelError(ModelName + "BankBIK", "Превышено допустимое количество символов!"); //if (model.CorrAccount == null) // ms.AddModelError(ModelName + "CorrAccount", "Заполните поле 'Банк кор/счет'"); //if (model.CorrAccount != null && model.CorrAccount.Trim().Length > 20) // ms.AddModelError(ModelName + "Name", "Превышено допустимое количество символов!"); } //if (model.DTID == 2) //{ // if (model.Code == null) // ms.AddModelError(ModelName + "Code", "Заполните поле 'Код банка'"); // if (model.Code != null && model.Code.Trim().Length > 9) // ms.AddModelError(ModelName + "Name", "Превышено допустимое количество символов!"); //} //else // model.Code = null; if (ms.Count != 0) model.StatusID = 4; UserRole role = CurrentUser.UserRole; model.DetailTypes = GpdRefDetailDao.GetDetailTypes(role, model.DTID, model.TypeName); //физики model.Persons = GpdRefDetailDao.GetPersons(0); //плательщики //model.PayerInfo = GpdRefDetailDao.GetRefDetail(role, 0, 2); //получатели //model.PayeerInfo = GpdRefDetailDao.GetRefDetail(role, 0, 1); //список реквизитов //model.RefDetails = GpdRefDetailDao.GetRefDetail(role, 0, model.DTID); }
/// <summary> /// Заполняем модель для редактирования по указанному ID. /// </summary> /// <param name="Id">Значение ID.</param> /// <param name="StatusID">Статус записи.</param> /// <param name="Operation">Операция: 1 - работа с набором, 2 - работа с реквизитом.</param> /// <param name="flgView">Признак просмотра списка.</param> /// <param name="DTID">ID типа реквизита</param> /// <param name="PayerID">ID плательщика</param> /// <param name="PayeeID">ID получателя</param> /// <param name="DetailId">ID реквизита</param> /// <returns></returns> public GpdRefDetailEditModel SetRefDetailEditModel(int Id, int StatusID, int Operation, bool flgView, int DTID, int PayerID, int PayeeID, int DetailId, int PersonID) { GpdRefDetailEditModel model = new GpdRefDetailEditModel(); GetPermission(model); SetGpdRefDetailTypes(model); model.Id = Id; model.StatusID = StatusID == 3 ? 2 : StatusID; model.Operation = Operation; model.DTID = DTID; model.PayerID = PayerID; model.PayeeID = PayeeID; model.DetailId = DetailId; model.PersonID = PersonID; model.SetInfo = GpdRefDetailDao.GetDetailSetList(model.Id, null, null, null, null, flgView, 0, null); if (model.SetInfo.Count != 0) { foreach (var doc in model.SetInfo) { model.Id = doc.Id; model.Name = doc.Name; model.PersonID = doc.PersonID; model.PayerID = doc.PayerID;//PayerID != doc.PayerID ? PayerID : doc.PayerID; model.PayeeID = doc.PayeeID;//PayeeID != doc.PayeeID ? PayeeID : doc.PayeeID; model.Account = doc.Account; model.CreatorID = doc.CreatorID; model.AllowEdit = doc.AllowEdit; } } if (model.PersonID != 0) { IList<GpdContractSurnameDto> Persons = GetPersonAutocomplete(null, model.PersonID); if (Persons.Count != 0) { model.PersonID = Persons[0].Id; model.Surname = Persons[0].LongName; } } UserRole role = CurrentUser.UserRole; //физики //model.Persons = GpdRefDetailDao.GetPersons(0); //плательщики //model.PayerInfo = GpdRefDetailDao.GetRefDetail(role, 0); //if (model.PayerInfo.Count != 0) //{ // //model.PayerID = PayerID == 0 ? model.PayerInfo[0].Id : model.PayerID; // foreach (var doc in model.PayerInfo) // { // if (doc.Id == model.PayerID) // { // 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; // break; // } // } //} ////получатели //model.PayeerInfo = GpdRefDetailDao.GetRefDetail(role, 0); //if (model.PayeerInfo.Count != 0) //{ // //model.PayeeID = PayeeID == 0 ? model.PayeerInfo[0].Id : model.PayeeID; // foreach (var doc in model.PayeerInfo) // { // if (doc.Id == model.PayeeID) // { // model.PayeerName = doc.Name; // model.PayeerINN = doc.INN; // model.PayeerKPP = doc.KPP; // model.PayeerAccount = doc.Account; // model.PayeerBankName = doc.BankName; // model.PayeerBankBIK = doc.BankBIK; // model.PayeerCorrAccount = doc.CorrAccount; // break; // } // } //} return model; }
/// <summary> /// Создаем список типов реквизитов для модели редактирования. /// </summary> /// <param name="model">Заполняемая модель</param> public void SetGpdRefDetailTypes(GpdRefDetailEditModel model) { UserRole role = CurrentUser.UserRole; model.DetailTypes = GpdRefDetailDao.GetDetailTypes(role, model.DTID, model.TypeName); }