Example #1
0
        /// <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;
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        /// <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", "№ заявки ЭССС является числовым полем!"); }
            }
        }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        /// <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);
            }
        }
Example #6
0
 /// <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);
     }
 }
Example #7
0
        /// <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;
        }