Beispiel #1
0
        /// <summary>
        /// Процедура сохранения договора в базе данных.
        /// </summary>
        /// <param name="model">Текущая модель.</param>
        /// <param name="error">Переменная для возврата текста сообщения об ошибке.</param>
        public bool SaveGpdContract(GpdContractEditModel model, out string error)
        {
            error = string.Empty;
            //нельзя отменить договор, если есть занесеный акт
            if (model.StatusID == 3 && GpdContractDao.ExistsReadyActs(model.Id))
            {
                error = "Нельзя отклонить данный договор, так как к нему уже есть готовые акты! Чтобы отменить занесение договора нужно, чтобы акт имел статус черновика!";
                return false;
            }
            UserRole currentUserRole = AuthenticationService.CurrentUser.UserRole;
            IUser currentUseId = AuthenticationService.CurrentUser;

            try
            {
                GpdContract gpdContract;// = GpdContractDao.Get(model.Id);

                if (model.Id == 0)
                {
                    gpdContract = new GpdContract
                    {
                        CreatorID = currentUseId.Id,
                        DepartmentId = model.DepartmentId,
                        PersonID = model.PersonID,
                        CTID = model.CTID,
                        StatusID = model.StatusID,
                        NumContract = model.NumContract,
                        NameContract = model.NameContract,
                        DateBegin = model.DateBegin,
                        DateEnd = model.DateEnd,
                        GPDID = model.GPDID,
                        GPDContractID = model.GPDContractID,
                        PurposePayment = model.PurposePayment,
                        DateP = model.DateP,
                        IsLong = model.DateP.HasValue ? true : false,
                        PaymentPeriodID = model.PaymentPeriodID,
                        Amount = model.Amount,
                        //DSID = model.DSID,
                        PayerID = model.PayerID,
                        PayeeID = model.PayeeID,
                        PAccountID = model.PAccountID,
                        MagEntities = new List<GpdMagProlongation>()
                    };
                }
                else
                {
                    gpdContract = GpdContractDao.Get(model.Id);
                    //if (model.DateP.HasValue && gpdContract.StatusID != 4)
                    //{
                    //    gpdContract.StatusID = model.StatusID == 3 ? 4 : model.StatusID;

                    //    if (model.DateP.HasValue && model.DatePOld.Value != model.DateP.Value)
                    //    {
                    //        gpdContract.DateP = model.DateP.Value;
                    //        gpdContract.IsLong = model.DateP.HasValue ? true : false;
                    //        gpdContract.EditDate = DateTime.Now;
                    //        gpdContract.EditorID = currentUseId.Id;
                    //    }
                    //}
                    //else
                    //{
                    //    //gpdContract.CreatorID = model.CreatorID;

                    //}
                    gpdContract.DepartmentId = model.DepartmentId;
                    gpdContract.PersonID = model.PersonID;
                    gpdContract.CTID = model.CTID;
                    gpdContract.StatusID = model.SendTo1C.HasValue ? 1 : model.StatusID == 3 ? 4 : model.StatusID;
                    gpdContract.NumContract = model.NumContract;
                    gpdContract.NameContract = model.NameContract;
                    gpdContract.DateBegin = model.DateBegin.Value;
                    gpdContract.DateEnd = model.DateEnd.Value;
                    gpdContract.GPDID = model.GPDID;
                    gpdContract.GPDContractID = model.GPDContractID;
                    gpdContract.PurposePayment = model.PurposePayment;
                    gpdContract.PaymentPeriodID = model.PaymentPeriodID;
                    gpdContract.Amount = model.Amount;
                    //gpdContract.DSID = model.DSID;
                    gpdContract.PayerID = model.PayerID;
                    gpdContract.PayeeID = model.PayeeID;
                    gpdContract.PAccountID = model.PAccountID;
                    gpdContract.EditDate = DateTime.Now;
                    gpdContract.EditorID = currentUseId.Id;
                    if (model.DateP.HasValue)
                    {
                        gpdContract.DateP = model.DateP.Value;
                        gpdContract.IsLong = true;
                        //gpdContract.StatusID = model.StatusID;
                    }
                    else
                        gpdContract.IsLong = false;
                }

                //если некоторые поля необязательны или сохраняем черновик
                if (gpdContract.CTID == 0) gpdContract.CTID = null;
                if (gpdContract.PersonID == 0) gpdContract.PersonID = null;
                if (gpdContract.PaymentPeriodID == 0) gpdContract.PaymentPeriodID = null;
                if (gpdContract.PayerID == 0) gpdContract.PayerID = null;
                if (gpdContract.PayeeID == 0) gpdContract.PayeeID = null;
                if (gpdContract.PAccountID == 0) gpdContract.PAccountID = null;
                if (gpdContract.DepartmentId == 0) gpdContract.DepartmentId = null;

                ChangeEntityProperties(gpdContract, model, currentUseId.Id);
                GpdContractDao.SaveAndFlush(gpdContract);
                model.Id = gpdContract.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);
            }
        }
Beispiel #2
0
        public ActionResult GpdContractEdit(GpdContractEditModel model)
        {
            ModelState.Clear();
            int StatusID = model.StatusID;
            if (model.Operation == 1)
            {
                model = GpdBl.SetGpdContractEdit(model);
                return View(model);
            }

            if (model.StatusID == 2 || model.StatusID == 4)
                GpdBl.CheckFillFieldsForGpdContract(model, ModelState);

            if (ModelState.Count != 0)
            {
                model = GpdBl.SetGpdContractEdit(model);//чтобы не пропадали данные
                model.StatusID = 4;
                return View(model);
            }
            string error;
            //сохранение договора
            if (GpdBl.SaveGpdContract(model, out error))
            {
                //model = GpdBl.SetGpdContractEdit(model.Id, model.PersonID, 0, null);
                string Message = StatusID == 4 ? "Черновик вашего документа сохранен!" : (StatusID == 2 ? "Ваш документ успешно сохранен!" : "Занесение вашего документа отменено!");
                //ModelState.AddModelError("errorMessage", Message);
                //Response.Redirect(Url.Action("GpdContractEdit", "GPD", new { Id = model.Id, PersonID = 0 }));//чтобы не срабатывало нажатие на F5 после сохранения и не множились записи
                //Session["GpdContractEdit_Post"] = true;
                return RedirectToAction("GpdContractEdit", "GPD", new { Id = model.Id, PersonID = 0, Msg = Message });//чтобы не срабатывало нажатие на F5 после сохранения и не множились записи
                //return View(model);
            }
            else
            {
                if (!string.IsNullOrEmpty(error))
                    ModelState.AddModelError("errorMessage", error);
                model = GpdBl.SetGpdContractEdit(model.Id, model.PersonID, 0, null);
                return View(model);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Редактируем подчиненную строку (журнал дат пролонгации договоров)
 /// </summary>
 /// <param name="entity">Объект договора.</param>
 /// <param name="model">Модель.</param>
 /// <param name="UserID">ID пользователя.</param>
 protected void ChangeEntityProperties(GpdContract entity, GpdContractEditModel model, int UserID)
 {
     if (model.DateP == null) return;
     if (model.DateP.HasValue && model.DatePOld != model.DateP)
     {
         //создаем строку для подчиненной таблицы
         GpdMagProlongation MagProlong = new GpdMagProlongation
         {
             //GCID = entity.Id,
             DateP = model.DateP,
             CreatorID = UserID,
             GpdContracts = entity
         };
         entity.MagEntities.Add(MagProlong);
     }
 }
Beispiel #4
0
        /// <summary>
        /// Определяем права роли текущего пользователя.
        /// </summary>
        /// <param name="model"></param>
        public void GetPermission(GpdContractEditModel model)
        {
            UserRole role = CurrentUser.UserRole;
            model.Permissions = GpdContractDao.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);
            }
        }
Beispiel #5
0
 /// <summary>
 /// Создаем список сроков оплаты.
 /// </summary>
 /// <param name="model"></param>
 public void SetGpdPaymentPeriods(GpdContractEditModel model)
 {
     UserRole role = CurrentUser.UserRole;
     model.PaymentPeriods = GpdContractDao.GetPaymentPeriods();
 }
Beispiel #6
0
        /// <summary>
        /// Проверки при сохранении договора.
        /// </summary>
        /// <param name="model"></param>
        /// <param name="ms"></param>
        public void CheckFillFieldsForGpdContract(GpdContractEditModel model, System.Web.Mvc.ModelStateDictionary ms)
        {
            if (model.StatusID == 4)
            {
                if (model.DateBegin == null)
                    ms.AddModelError("DateBegin", "Укажите дату начала действия договора!");

                //if (model.DateBegin < DateTime.Today) //&& model.DateBegin.Value.Month != DateTime.Today.Month)
                //    ms.AddModelError("DateBegin", "Дата начала срока действия договора не должна быть меньше текущей!");

                if (model.DateEnd == null)
                    ms.AddModelError("DateEnd", "Укажите дату окончания действия договора!");

                //if (model.DateEnd < model.DateBegin)
                //    ms.AddModelError("DateEnd", "Дата окончания действия договора должна быть больше, чем дата начала договора!");
            }
            else
            {
                if (model.DepartmentId == 0)
                    ms.AddModelError("DepartmentId", "Выберите подразделение!");
                else
                {
                    //проверяем уровень выбранного подразделения
                    if (GpdContractDao.GetDepLevel(model.DepartmentId) != 7)
                        ms.AddModelError("DepartmentId", "Нужно выбрать подразделение седьмого уровня!");
                }

                if (model.PersonID == 0)
                    ms.AddModelError("PersonID", "Выберите физическое лицо из списка!");

                if (model.PayerID == 0)
                    ms.AddModelError("PayerID", "Укажите плательщика!");

                if (model.PayeeID == 0)
                    ms.AddModelError("PayeeID", "Укажите получателя!");

                if (model.CTID == 0)
                    ms.AddModelError("CTID", "Выберите вид начисления из списка!");

                if (model.NameContract == null)
                    ms.AddModelError("NameContract", "Заполните поле 'Наименование договора'!");

                if (model.NumContract == null)
                    ms.AddModelError("NumContract", "Заполните поле '№ договора'!");

                if (model.DateBegin == null)
                    ms.AddModelError("DateBegin", "Укажите дату начала действия договора!");

                if (!model.DateP.HasValue)
                {
                    if (model.DateBegin.HasValue && model.DateBegin.Value.Year < 2014) //временно разрешили вводить договоры задним числом
                        //if (model.DateBegin < DateTime.Today) //&& model.DateBegin.Value.Month != DateTime.Today.Month)
                        ms.AddModelError("DateBegin", "Дата начала срока действия договора не должна быть меньше текущей!");
                }

                if (model.DateEnd == null)
                    ms.AddModelError("DateEnd", "Укажите дату окончания действия договора!");

                if (model.DateEnd < model.DateBegin)
                    ms.AddModelError("DateEnd", "Дата окончания действия договора должна быть больше, чем дата начала договора!");

                if (model.DateP != null)
                {
                    if (model.DateP <= model.DateEnd)
                        ms.AddModelError("DateP", "Дата пролонгации должна быть больше даты окончания действия договора!");
                }

                if (model.PaymentPeriodID == 0)
                    ms.AddModelError("PaymentPeriodID", "Укажите срок оплаты!");

                //if (model.GPDID == null)
                //    ms.AddModelError("GPDID", "Заполните поле 'ID физического лица (ГПД) в ЭССД'!");

                //if (model.GPDContractID == null)
                //    ms.AddModelError("GPDContractID", "Заполните поле 'ID договора с физ. лицом (ГПД) в ЭССД'!");

                if (model.PurposePayment == null)
                    ms.AddModelError("PurposePayment", "Заполните поле 'Назначение платежа'!");

                if (model.PurposePayment != null)
                {
                    //если при создании жмут сразу на занести, то формируем поле, которое автоматически формируется, если жать на кнопку черновик
                    if (model.PurposePaymentPart == null)
                    {
                        model.PurposePaymentPart = "Договор ГПХ # " + (model.Account != null && model.Account.Trim().Length != 0 ? model.Account : model.PayeeAccount) + " ## " + GpdContractDao.GetPersonName(model.PersonID) + " *";
                    }

                    if (model.PurposePaymentPart.Trim().Length + model.PurposePayment.Trim().Length > 210)
                        ms.AddModelError("PurposePayment", "Превышено количество символов!");
                }

                if (model.Amount == 0)
                    ms.AddModelError("Amount", "Сумма не должна быть равна нулю!");
            }

            SetGpdContractEditDropDowns(model);
        }
Beispiel #7
0
 /// <summary>
 /// Создаем список статусов договоров для модели редактирования.
 /// </summary>
 /// <param name="model"></param>
 public void SetGpdContractStatuses(GpdContractEditModel model)
 {
     UserRole role = CurrentUser.UserRole;
     model.Statuses = GpdContractDao.GetStatuses(role, model.StatusID, model.StatusName);
 }
Beispiel #8
0
 /// <summary>
 /// Заполняем выпадающие списки для модели редактирования договоров ГПД.
 /// </summary>
 /// <param name="model"></param>
 public void SetGpdContractEditDropDowns(GpdContractEditModel model)
 {
     GetPermission(model);
     SetGpdContractChargingTypes(model);
     SetGpdContractStatuses(model);
     SetGpdPaymentPeriods(model);
 }
Beispiel #9
0
        /// <summary>
        /// Заполняем модель.
        /// </summary>
        /// <param name="model">Обрабатываемая модель с частично заполненными полями</param>
        /// <returns></returns>
        public GpdContractEditModel SetGpdContractEdit(GpdContractEditModel model)
        {
            //модель заполняем частично, если не прошли проверки и чтобы остались введенные пользователем данные
            model.errorMessage = "";
            model.Operation = 0;

            SetGpdContractEditDropDowns(model);
            //плательщик
            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.PayerContractor = doc.ContractorName;
                        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.PayeeContractor = doc.ContractorName;
                        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.PersonAccount = doc.LongName;
                        model.Account = doc.PersonAccount;
                    }
                }
            }

            return model;
        }
Beispiel #10
0
        /// <summary>
        /// Заполнение модели для создания/редактирования договора.
        /// </summary>
        /// <param name="Id">ID договора.</param>
        /// <param name="PersonID">ID физического лица</param>
        /// <param name="DepId">ID подразделения</param>
        /// <param name="DepName">Название подразделения</param>
        /// <returns></returns>
        public GpdContractEditModel SetGpdContractEdit(int Id, int PersonID, int DepId, string DepName)
        {
            GpdContractEditModel model = new GpdContractEditModel();
            model.Id = Id;
            model.errorMessage = "";

            UserRole role = CurrentUser.UserRole;
            model.Contracts = GpdContractDao.GetContracts(role,
                model.Id,
                model.DepartmentId,
                model.CTID,
                null, null,
                model.Surname,
                model.NumContract,
                model.IsFind,
                model.StatusID,
                0, null);

            if (model.Contracts.Count > 0)
            {
                foreach (var doc in model.Contracts)
                {
                    model.CreatorID = doc.CreatorID;
                    model.DepartmentId = doc.DepartmentId;
                    model.DepartmentName = doc.DepartmentName;
                    model.PersonID = doc.PersonID;
                    model.CTID = doc.CTID;
                    model.StatusID = doc.StatusID;
                    model.NumContract = doc.NumContract;
                    model.NameContract = doc.NameContract;
                    model.DateBegin = doc.DateBegin;
                    model.DateEnd = doc.DateEnd;
                    model.DateP = doc.DateP;
                    model.DatePOld = doc.DatePOld;
                    //плательщик
                    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.PayerContractor = doc.PayerContractor;
                    //получатель
                    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.PayeeContractor = doc.PayeeContractor;
                    //лицевой счет
                    model.PAccountID = doc.PAccountID;
                    model.PersonAccount = doc.PersonAccount;
                    model.Account = doc.Account;

                    model.GPDID = doc.GPDID;
                    model.GPDContractID = doc.GPDContractID;
                    model.PurposePayment = doc.PurposePayment;
                    if (doc.CreateDate == null)
                        model.Autor = doc.Autor;
                    else
                        model.Autor = doc.CreatorName + " Дата создания договора " + doc.CreateDate.ToShortDateString() + " - " + doc.CreateDate.ToShortTimeString();
                    model.CreatorName = doc.CreatorName;
                    model.CreateDate = doc.CreateDate;
                    model.Surname = doc.Surname;
                    model.CTName = doc.CTName;
                    model.StatusName = doc.StatusName;
                    model.PaymentPeriodID = doc.PaymentPeriodID;
                    model.Amount = doc.Amount;
                    //model.DSID = doc.DSID;
                    model.PurposePaymentPart = doc.PurposePaymentPart;
                    model.flgRed = doc.flgRed;
                    model.SendTo1C = doc.SendTo1C;
                }
            }
            else
            {
                model.StatusID = 4;
                model.DepartmentId = DepId;
                model.DepartmentName = DepName;
            }

            SetGpdContractEditDropDowns(model);

            return model;
        }
Beispiel #11
0
 /// <summary>
 /// Создаем список видов начисления для модели редактирования.
 /// </summary>
 /// <param name="model"></param>
 public void SetGpdContractChargingTypes(GpdContractEditModel model)
 {
     UserRole role = CurrentUser.UserRole;
     model.ChargingTypes = GpdContractDao.GetChargingTypes(role, model.CTID, model.CTName);
 }