Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Информация
iconfalse
titleПостановка задачи

Добавить проверки при сохранении заявки на рабочее место:

  • Дата переезда должна быть больше даты создания заявки на организацию рабочего места
  • Дата переезда должна быть рабочим днем недели.
  • У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.
Подсказка
iconfalse
Инструмент: Палитра XML
Свойства страницы
Статус

Статус
colourYellow
titleВ РАБОТЕ

РазделФорма
Комментарий

панель
titleРеализация

Оглавление

панель
title<Сопроводительная информация>


Если есть какие-то нюансы по реализации, указать. Если нет, то удалить данный пункт
Блок кода
language
Примечание
js
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.ru.intertrust.cmj.af.so);
importPackage(Packages.ru.intertrust.cmj.rest.tuning);
importClass(Packages.ru.intertrust.cmj.rest.tuning.TuningHelper);
importClass(Packages.ru.intertrust.cmj.af.so.SOBeard);
importClass(Packages.ru.intertrust.cmj.af.core.AFSession);
importClass(Packages.ru.intertrust.cmj.af.core.AFCMDomino);
importClass(Packages.org.apache.commons.lang3.StringUtils);
importClass(Packages.java.lang.String);
importClass(Packages.ru.intertrust.cmj.af.so.impl.DepartmentUnit);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.af.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.af.so.impl.AppointmentHead);
importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils);
importClass(Packages.ru.intertrust.cmj.admin.AdminApplicationImpl);
importClass(Packages.ru.intertrust.cmj.admin.so.worktimeprofile.SOWorkTimeProfile);
importClass(Packages.java.util.Calendar);
importClass(Packages.java.util.Date);
importClass(Packages.java.util.ArrayList);
importClass(Packages.java.lang.Integer);
importClass(Packages.ru.intertrust.cmj.tunable.object.history.TunableHistoryHelper);
importClass(Packages.ru.intertrust.cmj.af.history.FieldBase);

function querySave(object, document) {

            if (object.tuning().getValues().get('wpMovingDate') != null && object.tuning().getValues().get('wpMovingDate').getValue() != null) {
                var movingDate = object.tuning().getValues().get('wpMovingDate').getValue();
                if (object.tuning().getValues().get('createdate') != null && object.tuning().getValues().get('createdate').getValue() != null) {
                    var createdate = object.tuning().getValues().get('createdate').getValue();
                    if (movingDate.compareTo(createdate) < 1) {
                        throw ("Дата переезда должна быть больше даты создания заявки на организацию рабочего места.");
                    }
                }
            }

	if (object.tuning().getValues().get('wpMovingDate') != null && object.tuning().getValues().get('wpMovingDate').getValue() != null) {
		var movingDate = object.tuning().getValues().get('wpMovingDate').getValue();

		var appAdmin = AFSession.get().getApplication(AdminApplicationImpl.class);
		var workTimeProfile = appAdmin.getWorkTimeProfileDefault();

		if (workTimeProfile == null) {
		  throw("Расчет даты переезда невозможен, так как не найден профиль рабочего времени по умолчанию. Обратитесь к администратору, для его создания");
		} else {
		    var dayDescription = workTimeProfile.getDayDescriptions();

		    var holidayIndexes = new ArrayList();
		    var holidayValue = SOWorkTimeProfile.DayType.HOLIDAY;

		    for(var i = 0; i < dayDescription.size(); i++) {
			   if(dayDescription.get(i).getType() == holidayValue)
			      	holidayIndexes.add(Integer.valueOf(i + 1));
		    }

		  var rCalendar = movingDate.toJavaCalendar();
		  var intDay = rCalendar.get(Calendar.DAY_OF_WEEK);
		  if(intDay == 1) {
			intDay = 7;
		  } else {
			--intDay;
		  }

		  for(var i = 0; i < holidayIndexes.size(); i++) {
		    	if(holidayIndexes.get(i) == intDay)
			    	throw("Дата переезда должна быть рабочим днем недели.");
		  }
		}
	}

        var empl = object.tuning().getValues().get('wpEmployee').getValue();
        var person = empl.originalData().getParty().getPerson();
        if (person != null) {
            var arrUnid = person.getUNID().split(":");
            var tnUnid = arrUnid[0] + "-TN:" + arrUnid[1];
            if (!StringUtils.isEmpty(tnUnid)) {
                var tunApp = AFSession.get().getApplication(TunableObjectApplication.class);
                var personTNObj = tunApp.getEntityByUNID(tnUnid);
                if (personTNObj != null && personTNObj.tuning().getValues().get("RMCode") != null &&
                !StringUtils.isEmpty(personTNObj.tuning().getValues().get("RMCode").getValue())) {
                    throw("У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.");
                }
            }
        }
}