Source: sdw/hr/recruiting/bewerbung/einstellungsanzeigeDialogLeitung.js

 /**
 * Dieses Modul definiert die Klasse einstellungsanzeigeDialogLeitung
 * 
 * 
 * @author sdw.systems
 * 
 * @module module:sdw/hr/recruiting/bewerbung/einstellungsanzeigeDialogLeitung
 * 
 * @extends module:sdw/templates/dialog
 *
 * @requires module:sdw/util
 * @requires module:sdw/hr/const
 * @requires module:sdw/const
 * @requires module:dojox/layout/TableContainer
 * @requires module:dijit/form/FilteringSelect
 * @requires module:dijit/form/CheckBox
 * @requires module:dijit/form/ValidationTextBox
 * @requires module:dojo/data/ItemFileReadStore
 * @requires module:dijit/form/DateTextBox
 * @requires module:dijit/form/NumberSpinner
 * @requires module:dojo/_base/lang
 * @requires module:dojo/on
 */ 
define([
    "dojo/_base/declare", "dojo/_base/lang", "dojo/on", 
    "dojox/layout/TableContainer",
    "dijit/form/ValidationTextBox", "dojo/data/ItemFileReadStore", "dijit/form/FilteringSelect","dijit/form/DateTextBox", "dijit/form/TimeTextBox", "dijit/form/CheckBox", "dijit/form/NumberSpinner", 
    "sdw/util", "sdw/const", "sdw/hr/const", 
    "sdw/templates/dialog"], function(
    	declare, lang, on,
    	TableContainer,
		ValidationTextBox, ItemFileReadStore, FilteringSelect, DateTextBox, TimeTextBox, CheckBox, NumberSpinner,
		Util, SDWConst, HRConst,
		Dialog){ 
	
var moduleName="sdw/hr/recruiting/bewerbung/einstellungsanzeigeDialogLeitung";	

/** @const {OPCODE} opcOptionlistKostenstelle=901327 */
var opcOptionlistKostenstelle=901327;
/** @const {OPCODE} opcOptionlistRechtskreis=901855 */
var opcOptionlistRechtskreis=901855;
/** @const {OPCODE} opcOptionlistFuehrungszeugnis=901865 */
var opcOptionlistFuehrungszeugnis=901865;
/** @const {OPCODE} opcOptionlistBefristung=900255 */
var opcOptionlistBefristung=900255;
/** @const {OPCODE} opcOptionlistTaetigkeit=901911 */
var opcOptionlistTaetigkeit=901911;

/** @const {OPCODE} opcUpdateEinstellungsanzeigeByLeitung=901323 */
var opcUpdateEinstellungsanzeigeByLeitung=901323;

return declare(moduleName, Dialog, 
/** @lends module:sdw/hr/recruiting/bewerbung/einstellungsanzeigeDialogLeitung#*/ 
{
	/** @property {String} moduleName Name des Moduls aus lokaler Konstante */
	moduleName:moduleName,
	
	/**
	 * Überschreibt den Methodenstub der Basisklasse
	 */
	setPorperties: function() {
		if (this.debug) console.log(moduleName+" ->setPorperties");
		//
		this.idErstuntersuchungCheckbox=Util.createUniqueDomId();
		this.idErstuntersuchungDatum=Util.createUniqueDomId();
		this.idErstuntersuchungZeit=Util.createUniqueDomId();
		//
		this.labelWidth=170;
		this.labelWidthSmall=90;
		this.hasDescriptionDataSet=true;
		this.width=590;
		this.height=620;
		//	no 
		if (this.metadata.mandant.oid==SDWConst.mandant001) this.height-=50;
    	//	
		if (this.debug) console.log(moduleName+" <-setPorperties");
	},
	
	/**
	 * Überschreibt den Methodenstub der Basisklasse
	 */
	createDatasets: function() {
		if (this.debug) console.log(moduleName+" ->createDatasets");
		//
		(this.item==null) ? this.beschreibung="" : this.beschreibung=this.item.beschreibung;
		//
    	// Laufzeit
    	this.datasets[this.datasets.length]=new TableContainer({id:Util.createUniqueDomId(), showLabels:true, cols:1, 
        	labelWidth:this.labelWidth, customClass: SDWConst.cssKlasseDataset, headline:this.languagePack.translate("Beschäftigungsverhältnis")});
    	
    	this.datasets[this.datasets.length-1].addChild(new FilteringSelect({
			label: this.languagePack.translate("Hauptkostenstelle"), name:"kostenstelle", required:true, 
			displayedValue: this.item.kostenstelle, 
			style: Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			store: new ItemFileReadStore({url: Util.getStoreURI(opcOptionlistKostenstelle, this.item.oid)}),
			promptMessage: this.languagePack.translate("Bitte wählen Sie die Hauptkostenstelle aus"),
			missingMessage: this.languagePack.translate("Die Hauptkostenstelle ist erforderlich") 
		}));
    	this.datasets[this.datasets.length-1].addChild(new FilteringSelect({
			label: this.languagePack.translate("Tätigkeit"), name:"taetigkeit", required:true, 
			displayedValue: this.item.taetigkeit, 
			style: Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			store: new ItemFileReadStore({url: Util.getStoreURI(opcOptionlistTaetigkeit, this.additionalArgs.oidBewerberqualifikation)}),
			promptMessage: this.languagePack.translate("Bitte wählen die Tätigkeit aus"),
			missingMessage: this.languagePack.translate("Die Tätigkeit ist erforderlich") 
		}));
    	this.datasets[this.datasets.length-1].addChild(new NumberSpinner({
			label: this.languagePack.translate("Wochenstunden"), name:"waz", required:true, 
			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			value: (this.item.waz==null) ? "" : this.item.waz, constraints: {min:0, max:48, pattern: "#0.##"},
			promptMessage: this.languagePack.translate("Bitte geben Sie die Wochenstunden ein. Valide Werte sind (0<=x<=48)"), 
			missingMessage: this.languagePack.translate("Die Wochenarbeitszeit ist erforderlich") 
		}));
    	
    	this.datasets[this.datasets.length]=new TableContainer({id:Util.createUniqueDomId(), showLabels:true, cols:1, 
        	labelWidth:this.labelWidth, customClass: SDWConst.cssKlasseDataset, headline:this.languagePack.translate("Dauer und Befristung des Beschäftigungsverhältnisses")});
    	this.datasets[this.datasets.length-1].addChild(new FilteringSelect({
    		label: this.languagePack.translate("Befristung"), name:"befristung", required:true,
			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			displayedValue: (this.item) ? this.item.befristung : this.languagePack.translate(HRConst.optionUnbefristet),
			store: new ItemFileReadStore({url: Util.getStoreURI(opcOptionlistBefristung)}),
			promptMessage: this.languagePack.translate("Bitte wählen Sie die Art der Stellenbesetzung aus") 
		}));
		this.datasets[this.datasets.length-1].addChild(new DateTextBox({
			label: this.languagePack.translate("Beginn"), name:"von", required:true, 
			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			value: (this.item.von=="") ? null : this.item.von, 
			promptMessage: this.languagePack.translate("Bitte geben Sie das Datum des Beginns des Beschäftigungsverhältnisses ein"), 
			missingMessage: this.languagePack.translate("Dieses Datum ist erforderlich") 
		}));
//    	if (this.item.stellenausschreibung.befristung.indexOf(HRConst.keyBefristetOhneGrund)==0) {
//    		this.datasets[this.datasets.length-1].addChild(new DateTextBox({
//    			label: this.languagePack.translate("Ende"), name:"bis", required:false, 
//    			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
//    			value: (this.item.bis=="") ? null : this.item.bis, 
//    			promptMessage: this.languagePack.translate("Bitte geben Sie das Datum der Beendigung des Beschäftigungsverhältnisses ein oder kein Datum im Falle einer unbefristeten Einstellung"), 
//    			missingMessage: this.languagePack.translate("Dieses Datum ist erforderlich") 
//    		}));
//    	}
//    	else if (this.item.stellenausschreibung.befristung.indexOf(HRConst.keyBefristetMitGrund)==0) {
        	this.datasets[this.datasets.length-1].addChild(new ValidationTextBox({
    			label: this.languagePack.translate("Ende (verbal)"), name:"bisverbal", required:false, trim:true,
    			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
    			value: (this.item.bisverbal==null) ? "" : this.item.bisverbal, 
    			promptMessage: this.languagePack.translate("Bitte geben Sie das Ende des Beschäftigungsverhältnisses als Text ein, z.B. 'bis Wegfall des Ereignisses'") 
    		}));
    		this.datasets[this.datasets.length-1].addChild(new DateTextBox({
    			label: this.languagePack.translate("Ende (Datum, alternativ)"), name:"bis", required:false, 
    			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
    			value: (this.item.bis=="") ? null : this.item.bis, 
    			promptMessage: this.languagePack.translate("Bitte geben Sie das Ende des Beschäftigungsverhältnisses nur ein, falls es sich um ein fixes Datum handelt")
    		}));
        	this.datasets[this.datasets.length-1].addChild(new ValidationTextBox({
    			label: this.languagePack.translate("Vertreten wird"), name:"vertretung", required:false, trim:true,
    			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
    			value: (this.item.vertretung==null) ? "" : this.item.vertretung, 
    			promptMessage: this.languagePack.translate("Bitte geben Sie die ggf ein, wer vertreten wird") 
    		}));
        	this.datasets[this.datasets.length-1].addChild(new ValidationTextBox({
    			label: this.languagePack.translate("Vertretungsgrund"), name:"vertretungsgrund", required:false, trim:true,
    			style:Util.getControlWidth(this.width, this.datasets[this.datasets.length-1].labelWidth), 
    			value: (this.item.vertretungsgrund==null) ? "" : this.item.vertretungsgrund, 
    			promptMessage: this.languagePack.translate("Bitte geben Sie die ggf den Vertretungsgrund ein") 
    		}));
    //	}

        if (this.metadata.mandant.oid==SDWConst.mandant000) {
	       	this.datasets[this.datasets.length]=new TableContainer({id:Util.createUniqueDomId(), showLabels:true, cols:3, 
	           	labelWidth:250, customClass: SDWConst.cssKlasseDataset, headline:this.languagePack.translate("Erstuntersuchung")});
	    	
	       	var checkboxErstuntersuchung=new CheckBox({
				label: this.languagePack.translate("Erforderlich"), id:this.idErstuntersuchungCheckbox, 
				checked: true,
			});
	    	on(checkboxErstuntersuchung, SDWConst.evtClick, lang.hitch(this, this.onClickErstuntersuchung));
	    	this.datasets[this.datasets.length-1].addChild(checkboxErstuntersuchung);
	    	
			this.datasets[this.datasets.length-1].addChild(new DateTextBox({
				label: this.languagePack.translate("Datum"), name:"erstuntersuchungDatum", required:false, 
				style:Util.getControlWidthZweiSpalten(this.width, this.datasets[this.datasets.length-1].labelWidth), 
				value: (this.item.erstuntersuchungDatum=="") ? null : this.item.erstuntersuchungDatum, 
				id:this.idErstuntersuchungDatum,
				promptMessage: this.languagePack.translate("Bitte geben Sie das Datum der Erstuntersuchung an")
			}));
			this.datasets[this.datasets.length-1].addChild(new TimeTextBox({
				label: this.languagePack.translate("Zeit"), name:"erstuntersuchungZeit", required:false, 
				style:Util.getControlWidthZweiSpalten(this.width, this.datasets[this.datasets.length-1].labelWidth), 
				value: (this.item.erstuntersuchungZeit=="") ? null : "T"+this.item.erstuntersuchungZeit,
				//value: "T17:30:00",
				constraints: {	timePattern: 'HH:mm',
					            clickableIncrement: 'T00:15:00',
					            visibleIncrement: 'T00:15:00',
					            visibleRange: 'T01:00:00'
					        },
				id:this.idErstuntersuchungZeit,
				promptMessage: this.languagePack.translate("Bitte geben Sie das Datum der Erstuntersuchung an")
			}));
        }
        	
    	this.datasets[this.datasets.length]=new TableContainer({id:Util.createUniqueDomId(), showLabels:true, cols:2, 
        	labelWidth:250, customClass: SDWConst.cssKlasseDataset, headline:this.languagePack.translate("Einstellung")});
    	
    	this.datasets[this.datasets.length-1].addChild(new CheckBox({
			label: this.languagePack.translate("Schichtdienst"), name:"schichtdienst", 
			checked: (this.item==null) ? false: this.item.schichtdienst 
		}));
    	this.datasets[this.datasets.length-1].addChild(new CheckBox({
			label: this.languagePack.translate("Wiederholte Einstellung"), name:"wiederholung", 
			checked: (this.item==null) ? false: this.item.wiederholung 
		}));
    	
    	this.datasets[this.datasets.length-1].addChild(new FilteringSelect({
			label: this.languagePack.translate("Rechtskreis"), name:"rechtskreis", required:true, 
			displayedValue: this.item.rechtskreis, 
			style: Util.getControlWidthZweiSpalten(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			store: new ItemFileReadStore({url: Util.getStoreURI(opcOptionlistRechtskreis, this.metadata.mandant.oid)}),
			promptMessage: this.languagePack.translate("Bitte wählen Sie den Rechtskreis aus"),
			missingMessage: this.languagePack.translate("Der Rechtskreis ist erforderlich") 
		}));
    	this.datasets[this.datasets.length-1].addChild(new FilteringSelect({
			label: this.languagePack.translate("Führungszeugnis"), name:"fuehrungszeugnis", required:true, 
			displayedValue: this.item.fuehrungszeugnis, 
			style: Util.getControlWidthZweiSpalten(this.width, this.datasets[this.datasets.length-1].labelWidth), 
			store: new ItemFileReadStore({url: Util.getStoreURI(opcOptionlistFuehrungszeugnis, this.metadata.mandant.oid)}),
			promptMessage: this.languagePack.translate("Bitte wählen Sie die Art des Führungszeugnis aus aus"),
			missingMessage: this.languagePack.translate("Diese Angabe ist erforderlich") 
		}));
    	//
    	if (this.debug) console.log(moduleName+" <-createDatasets");
    },
    
	/**
	 * Eventhandler, aktiviert bzw. deaktiviert und löscht die Eingaben der Felder zur Erstuntersuchung
	 */
    onClickErstuntersuchung: function() {
		if (this.debug) console.log(moduleName+" ->onClickErstuntersuchung");
		//
    	if (Util.getDijit(this.idErstuntersuchungCheckbox).checked==true) {
    		Util.enable(this.idErstuntersuchungDatum);
    		Util.enable(this.idErstuntersuchungZeit);
    	}
    	else {
    		Util.setValue(this.idErstuntersuchungDatum, null);
    		Util.setValue(this.idErstuntersuchungZeit, null);
    		Util.disable(this.idErstuntersuchungDatum);
    		Util.disable(this.idErstuntersuchungZeit);
    	}
		if (this.debug) console.log(moduleName+" <-onClickErstuntersuchung");
    },
    
	/**
	 * Überschreibt den Methodenstub der Basisklasse
	 */
	isValid: function(data) {
		if (this.debug) console.log(moduleName+" ->isValid");
		//
		var valid=true;
		//
		if (this.metadata.mandant.oid==SDWConst.mandant000) {
			if (Util.getDijit(this.idErstuntersuchungCheckbox).checked==true && (data.erstuntersuchungDatum==null || data.erstuntersuchungDatum==""|| data.erstuntersuchungZeit==null || data.erstuntersuchungZeit==""  )) {
				this.showError("Bitte geben Sie das Datum und die Zeit der Erstuntersuchung an. Falls diese nicht erforderlich ist, entfernen Sie bitte den Haken bei 'Erstuntersuchung' 'Erforderlich'.");
				valid=false;
			};
			if (Util.getDijit(this.idErstuntersuchungCheckbox).checked==false) {
				// disables form data
				data.erstuntersuchungDatum="";
				data.erstuntersuchungZeit="";
			}
		}
		//	Proper parameters for command-object
		this.opcode=opcUpdateEinstellungsanzeigeByLeitung;
		this.oid=this.item.oid;
		//
		if (this.debug) console.log(moduleName+" <-isValid: "+valid);
		return valid;
	},
    
	/**
	 * Überschreibt den Methodenstub der Basisklasse
	 */
    getResponse: function(response) {
		if (this.debug) console.log(moduleName+" ->getResponse");
		//
		if (this.caller.createGUI) this.caller.createGUI(response);
		//
		if (this.debug) console.log(moduleName+" <-getResponse");
	}
	

});});