/** * @author: Angel Dimitrov * @author: Darin Kolev * http://www.sourcestream.de */ Ext.namespace('oc'); function random(min, max){ if (min > max) { return (-1); } if (min == max) { return (min); } return (min + parseInt(Math.random() * (max - min + 1))); } /** * Array convenience method to check for membership. * * @param {Object} obj Element * @returns boolean */ Array.prototype.contains = function(obj){ var i, listed = false; var l = this.length; for (i = 0; i < l; i++) { if (this[i] === obj) { listed = true; break; } } return listed; }; oc.storeVerteilung_dropdown = function(config){ var data = [['Prozentual vom Gesamtumsatz', 1], ['Prozentual festgelegt', 2]]; if (config) { if (config.ztype == 'erg') { data = [['Direkteingabe', '0'], ['Prozentual vom Gesamtumsatz', '1'], ['Prozentual festgelegt', '2']]; } } oc.storeVerteilung_dropdown.superclass.constructor.call(this, { autoLoad: true, fields: [{ name: 'Bezeichnung' }, { name: 'Verteilung' }], data: data, id: 1 }); }; Ext.extend(oc.storeVerteilung_dropdown, Ext.data.SimpleStore, {}); oc.Store = function(){ oc.Store.superclass.constructor.call(this, {}); }; oc.Grid = function(config){ oc.Grid.superclass.constructor.call(this, config); }; Ext.extend(oc.Grid, Ext.grid.GridPanel, { stripeRows: true, loadMask: true, header: false, border: false }); oc.Search = Ext.extend(Ext.ux.grid.Search, { mode: 'remote', position: 'bottom', iconCls: false, dateFormat: 'd.m.Y', minLength: 2, align: 'left' }); Ext.xWin = Ext.extend(Ext.Window, { bodyStyle: 'padding:10px', layout: 'fit', width: 500, height: 300, closeAction: 'close', plain: true }); Ext.extend(oc.Store, Ext.data.Store, {}); oc.gStore = function(config){ oc.gStore.superclass.constructor.call(this, config); }; Ext.extend(oc.gStore, Ext.data.GroupingStore, { remoteSort: true }); function isStoreDirty(store){ if (store) { if (store.getModifiedRecords()[0]) { return true; } else { return false; } } } function formfield_Bemerkung(){ var Bemerkung = new Ext.form.HtmlEditor({ fieldLabel: 'Bemerkung', name: 'Bemerkung', height: 130, anchor: '100%' }); return Bemerkung; } function formfield_Von(){ var Von = new Ext.form.DateField({ fieldLabel: 'Von', name: 'Von', format: 'd.m.Y', allowBlank: false }); return Von; } function formfield_Bis(){ var Bis = new Ext.form.DateField({ fieldLabel: 'Bis', name: 'Bis', format: 'd.m.Y' }); return Bis; } function formfield_Name(){ var Name = new Ext.form.TextField({ listeners: { valid: function(field){ field.findParentByType(Ext.Window).setTitle(field.getValue()); } }, fieldLabel: 'Name', name: 'Name', allowBlank: false, width: 165 }); return Name; } function formfield_Funktion(){ var Funktion = new Ext.form.TextField({ fieldLabel: 'Funktion', name: 'Funktion', width: 165 }); return Funktion; } function formfield_Jahr(){ var Jahr_edit = new Ext.form.Hidden({ name: 'Jahr' }); return Jahr_edit; } function formfield_Profitcenter(cokie){ var storeProfitCenter_dropdown = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); storeProfitCenter_dropdown.load(); var ProfitCenter_dropdown = new Ext.form.ComboBox({ listeners: { collapse: function(combo){ var Jahr = combo.findParentByType(Ext.FormPanel).getForm().findField('Jahr').getValue(); var zGrid = combo.findParentByType(Ext.TabPanel).getItem(3); var zRecord = zGrid.getStore().getById(Jahr); var zIndex = zGrid.getStore().indexOf(zRecord); if (zRecord.get('Verteilung') == 2) { zRecord.set('PCNR', combo.getValue()); for (counter = 0; counter < 17; counter++) { zGrid.getStore().data.items[zIndex].data[String(counter)] = 0; //if (zGrid.getColumnModel().findColumnIndex(String(counter)) !== -1) { if (counter == combo.getValue()) { zGrid.getStore().data.items[zIndex].data[String(counter)] = 100; } else { zGrid.getStore().data.items[zIndex].data[String(counter)] = 0; } //} } zGrid.reconfigure(zGrid.getStore(), zGrid.getColumnModel()); } } }, name: 'PCNR', fieldLabel: 'ProfitCenter', editable: false, typeAhead: false, triggerAction: 'all', store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', allowBlank: false, renderer: function(v){ // small patch for the new Personal if (!v) { v = cokie.get("current_profitcenter"); } return storeProfitCenter_dropdown.data.items[v].data.ProfitCenter; } }); return ProfitCenter_dropdown; } function submitQuery(grid, type){ if (grid.printTitle) { grid_title = grid.printTitle; } else { grid_title = grid.title; } if (!type) { type = 'msexcel'; } exec = function(btn){ if (btn == 'yes') { mode = 'all'; } else if (btn == 'no') { mode = 'current'; } else { return false; } Ext.Ajax.request({ url: 'export.php', params: { action: 'generate', dbquery: Base64.encode(dbquery), output: type, columns: Ext.util.JSON.encode(columns_array), title: grid_title, mode: mode }, method: 'POST', success: function(response, b){ if (type == 'msexcel') { file_id = Ext.util.JSON.decode(response.responseText).export_id; Ext.DomHelper.append(document.body, { tag: 'iframe', id: 'downloadIframe', frameBorder: 0, width: 0, height: 0, css: 'display:none;visibility:hidden;height:0px;', src: 'export.php?get=' + file_id + '&title=' + grid_title }); } else { //id = Math.random(); var my_window = window.open(''); my_window.document.write(response.responseText); my_window.focus(); } } }); }; var dbquery = grid.store.reader.jsonData.query; var total_records = grid.store.reader.jsonData.total; var current_records = grid.store.getCount(); columns = grid.getColumnModel().config; //patch for showing grouping field.BEGIN // if (grid.view.enableGrouping) { //group_field_index = grid.view.getGroupField(); // } //else { group_field_index = false; //} //patch for showing grouping field.END var columns_array = Array(); var l = columns.length for (i = 0; i < l; i++) { if (((columns[i].hidden !== true) && (columns[i].header)) || ((columns[i].hidden == true) && (columns[i].dataIndex == group_field_index))) { columns_array.push([columns[i].dataIndex, columns[i].header]); } } Ext.apply(Ext.Msg.buttonText, { yes: 'Alle (' + total_records + ')', no: 'Nur die auf der aktiven Seite (' + current_records + ')' }); Ext.MessageBox.show({ title: 'Daten exportieren', msg: 'Wie viele Einträge möchten Sie exportieren?', buttons: Ext.MessageBox.YESNOCANCEL, buttonText: { yes: 'da', no: 'ne', cancel: 'moje bi' }, fn: exec, icon: Ext.MessageBox.QUESTION }); Ext.apply(Ext.Msg.buttonText, { yes: 'Ja', no: 'Nein' }); } Ext.QuickTips.init(); function EmptyPanel(item){ panel = new Ext.Panel({ title: item.title, deferredRender: false, autoScroll: true, margins: '0 4 4 0', collapsible: false, width: 800, height: 600, border: false, layout: 'fit', items: item }); item.setTitle(''); return panel; } function roundMoney(v){ return (Math.round(v * 100) / 100); } //------------------------------------------------------- initSettingsLoadCount = 0; function activateLoginWindowAfterLoad(){ initSettingsLoadCount++; //console.info(initSettingsLoadCount); if (initSettingsLoadCount == 4) { //Ext.getCmp('ocLoginWindow').getEl().unmask(); } } var parameter = new Ext.data.Store({ listeners: { load: function(){ if (!Parameter('DefaultNutzungsgrad') || !Parameter('DefaultNutzungsstunden')) { alert('Datenbank fehler ! Bitte beim Administrator melden'); } else { activateLoginWindowAfterLoad(); } } }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=sonstiges' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'S_P_Key' }, [{ name: 'Parameter' }, { name: 'Wert' }, { name: 'S_PG_Key' }, { name: 'S_P_Key' }]) }); parameter.load(); var pcStore = new Ext.data.Store({ listeners: { load: activateLoginWindowAfterLoad }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PCNR' }, [{ name: 'ProfitCenter' }, { name: 'PCNR' }]) }); pcStore.load(); function Parameter(key){ var record = parameter.getById(key); if (record) { return record.get('Wert'); } return false; } var parameter_fehlzeiten = new Ext.data.Store({ listeners: { load: activateLoginWindowAfterLoad }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=fehlzeiten' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'FZNR' }, [{ name: 'FZNR' }, { name: 'Fehlzeit' }, { name: 'Default_1' }]) }); parameter_fehlzeiten.load(); var parameter_kostenarten = new Ext.data.Store({ listeners: { load: activateLoginWindowAfterLoad }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=psd' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PKNR' }, [{ name: 'Kosten' }]) }); parameter_kostenarten.load(); //------------------------------------------------------- function psd_kostenarten(key){ i = parameter_kostenarten.indexOfId(String(key)); return parameter_kostenarten.data.items[i].data.Kosten; } function psd_fehlzeitarten(key, field){ i = parameter_fehlzeiten.indexOfId(String(key)); return parameter_fehlzeiten.data.items[i].data[field]; } function round(v){ v = Number(v); return (Math.round(v * 100) / 100); } // reference local blank image Ext.BLANK_IMAGE_URL = 'ext3/resources/images/default/s.gif'; // create namespace Ext.namespace('oc'); Ext.QuickTips.init(); // -- GLOBAL FUNCTIONS.BEGIN function WarningMessage(text, title){ if (!title) { title = 'Fehler!'; } Ext.MessageBox.show({ title: title, msg: text, icon: Ext.MessageBox.WARNING, minWidth: 300, buttons: Ext.Msg.OK }); } function InfoMessage(text, title){ if (!title) { title = 'Information'; } var w = new Ext.ux.window.MessageWindow({ bodyStyle: 'padding:10px', margins: '5 5 5 5', title: title, autoDestroy: true,//default = true autoHeight: true, autoHide: true,//default = true //bodyStyle: 'text-align:center', handleHelp: function(){ //console.info('help requested'); }, hideFx: { delay: 1000, mode: 'standard',//null,'standard','custom',or default ghost useProxy: false //default is false to hide window instead }, html: text, iconCls: 'x-icon-error', showFx: { delay: 0, duration: 0.5, //defaults to 1 second mode: 'standard',//null,'standard','custom',or default ghost useProxy: false //default is false to hide window instead }, width: 250 //optional (can also set minWidth which = 200 by default) }); w.show(Ext.getDoc()); } function debugMe(object){ InfoMessage('
' + print_r(object, true) + '
', 'Debug Me !'); } // -- GLOBAL FUNCTIONS.END /** * plug European currency renderer into formatter * @param {Number} num */ function formatNumber(num, dec, thou, pnt, curr1, curr2, n1, n2){ var x = Math.round(num * Math.pow(10, dec)); if (x >= 0) n1 = n2 = ''; var y = ('' + Math.abs(x)).split(''); var z = y.length - dec; if (z < 0) z--; for (var i = z; i < 0; i++) y.unshift('0'); if (z < 0) z = 1; y.splice(z, 0, pnt); if (y[0] == pnt) y.unshift('0'); while (z > 3) { z -= 3; y.splice(z, 0, thou); } var r = curr1 + n1 + y.join('') + n2 + curr2; return r; } Ext.util.Format.deMoney = function(num, exact){ //return formatNumber(num, 2, '.', ',', '', '', '-', ''); if (num) { num = num.toString().replace(/\$|\,/g, ''); if (isNaN(num)) { num = "0"; } sign = (num == (num = Math.abs(num))); /* num = Math.floor(num * 100 + 0.50000000001); cents = num % 100; num = Math.floor(num / 100).toString(); if (cents < 10) { cents = "0" + cents; } var n_l = num.length; var l = Math.floor((num.length - (1 + i)) / 3); for (var i = 0; i < l; i++) { num = num.substring(0, n_l - (4 * i + 3)) + '.' + num.substring(n_l - (4 * i + 3)); } */ return (((sign) ? '' : '-') + formatNumber(num, 2, '.', ',', '', '', '-', '') + ' €' + ((sign) ? '' : '')); } else { return '0 €'; } }; Ext.util.Format.deMoney_no_nulls = function(v){ if (!v) { return ''; } else { return Ext.util.Format.deMoney(v); } }; Ext.util.Format.deMoney_erg = function(num){ if (num) { num = num.toString().replace(/\$|\,/g, ''); if (isNaN(num)) { num = "0"; } sign = (num == (num = Math.abs(num))); return (((sign) ? '' : '-') + formatNumber(num, 0, '.', '', '', '', '-', '') + ' €' + ((sign) ? '' : '')); } else { return '0 €'; } }; Ext.util.Format.hour = function(h){ if (h) { return (Math.round(h) + ' h'); } }; Ext.util.Format.bytes = function(v){ v = Number(v); var size = Number(v) / 1024; if (size < 1024) { size = Math.round(size, 2); size += ' KB'; } else { if (size / 1024 < 1024) { size = Math.round(size / 1024, 2); size += ' KB'; } else { size = Math.round(size / 1024 / 1024, 2); size += ' GB'; } } return size; }; Ext.util.Format.percents = function(v){ Ext.util.Format.realpercents(v); }; Ext.util.Format.realpercents = function(v){ v = (Math.round((v - 0) * 100) / 100); v = (v == Math.floor(v)) ? v + ",00" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v); return (v + ' %'); }; Ext.util.Format.round = function(v){ return Math.round(v); }; Ext.apply(Ext.DatePicker.prototype, { todayText: "Heute", todayTip: "{0} (Leertaste)", minText: "Dieses Datum ist vor dem Minimaldatum", maxText: "Dieses Datum ist nach dem Maximaldatum", format: "d.m.y", disabledDaysText: "", disabledDatesText: "", monthNames: Date.monthNames, dayNames: Date.dayNames, nextText: 'Nächster Monat (Steuerung+Rechts)', prevText: 'Vorheriger Monat (Steuerung+Links)', monthYearText: 'Monat auswählen (Steuerung+Hoch/Runter zur Jahresauswahl)', startDay: 1 // Week start on Monday }); var current_letters = 'all'; var current_year = 2009; function DocWin(title, path){ win = new Ext.Window({ layout: 'fit', width: 900, height: 400, frame: true, border: true, closeAction: 'hide', items: [{ title: title, autoLoad: { url: path }, autoScroll: true }] }); win.show(); } function IsNumeric(sText){ var ValidChars = "0123456789"; var IsNumber = true; var Char; for (i = 0; i < sText.length && IsNumber == true; i++) { Char = sText.charAt(i); if (ValidChars.indexOf(Char) == -1) { IsNumber = false; } } return IsNumber; } Ext.override(Ext.grid.EditorGridPanel, { reconfigure: function(store, colModel){ if (this.loadMask && this.loadMask.store) { this.loadMask.destroy(); this.loadMask = new Ext.LoadMask(this.bwrap, Ext.apply({}, { store: store }, this.initialConfig.loadMask)); } this.view.initData(store, colModel); this.store = store; this.colModel = colModel; if (this.rendered) { this.view.refresh(true); } } }); Ext.override(Ext.form.NumberField, { baseChars: '0123456789.,', setValue: function(v){ if (this.allowDecimals != false && this.decimalSeparator === ',') { v = parseFloat(v); v = isNaN(v) ? '' : (v.toFixed(this.decimalPrecision)).replace(".", this.decimalSeparator); } this.value = v; if (this.rendered) { this.el.dom.value = (Ext.isEmpty(v) ? '' : v); if (this.decimalSeparator === ',') { this.setRawValue(this.addThousandsSeparator(String(v))); } this.validate(); } return this; }, initEvents: function(){ var allowed = this.baseChars + ''; if (this.decimalSeparator === ',') { allowed += '.'; } if (this.allowDecimals) { allowed += this.decimalSeparator; } if (this.allowNegative) { allowed += '-'; } this.maskRe = new RegExp('[' + Ext.escapeRe(allowed) + ']'); Ext.form.NumberField.superclass.initEvents.call(this); }, beforeBlur: function(){ var v = this.parseValue(this.getRawValue().replace(/\./g, "")); if (!Ext.isEmpty(v)) { this.setValue(this.fixPrecision(v)); if (v > 0 && this.decimalSeparator === ',') { this.setRawValue(this.addThousandsSeparator(this.getRawValue())); } } }, onFocus: function(){ var v = this.parseValue(this.getRawValue()); if (!Ext.isEmpty(v)) { if (v > 0 && this.decimalSeparator === ',') { this.setRawValue(this.getRawValue().replace(/\./g, "")); } } }, addThousandsSeparator: function(sValue){ var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'); while (sRegExp.test(sValue)) { sValue = sValue.replace(sRegExp, '$1.$2'); } return sValue; }, getValue: function(){ if (!this.rendered) { return this.value; } var v = this.parseValue(this.getRawValue().replace(/\./g, "")); if (v === this.emptyText || v === undefined) { v = ''; } return this.fixPrecision(v); }, processValue: function(){ return this.getValue(); } }); Ext.override(Ext.form.HtmlEditor, { // private defaultValue: (Ext.isOpera || Ext.isIE6) ? ' ' : '​', cleanHtml: function(html){ var dv = this.defaultValue; html = String(html); // if (html.length > 5) { if (Ext.isWebKit) { // strip safari nonsense html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, ''); } // } if (html.charCodeAt(0) == dv.replace(/\D/g, '')) { html = html.substring(1); } return html; } }); Ext.override(Ext.form.CompositeField, { buildLabel: function(segments){ return segments.join(''); } }); Ext.override(Ext.grid.GridView, { holdPosition: false, onLoad: function(){ if (!this.holdPosition) this.scrollToTop(); this.holdPosition = false } }); Ext.onReady(function(){ var username = new Ext.form.TextField({ fieldLabel: 'Benutzername', name: 'username', allowBlank: false }); var password = new Ext.form.TextField({ fieldLabel: 'Kennwort', name: 'password', allowBlank: false, inputType: 'password' }); var formPanel_Login = new Ext.form.FormPanel({ id: 'formPanel_Login', baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', bodyStyle: 'padding:15px', items: [username, password] }); username.on("specialkey", function(field, e){ if (Ext.EventObject.getKey() == 13) { var tmp = new anmelden(formPanel_Login); tmp.exec(); } }); password.on("specialkey", function(field, e){ if (Ext.EventObject.getKey() == 13) { var tmp = new anmelden(formPanel_Login); tmp.exec(); } }); function anmelden(fp){ this.exec = function(){ if (fp.form.isValid()) { fp.getEl().mask(); fp.form.submit({ url: 'login.php', success: function(form, action){ user_level = Number(action.result.result.level); Ext.MessageBox.show({ title: "OC wird geladen", msg: "Bitte haben Sie einen Moment Geduld", icon: Ext.MessageBox.INFO, minWidth: 300 }); login_win.hide(); Ext.onReady(oc.app.init, oc.app); Ext.MessageBox.hide(); }, failure: function(form, action){ WarningMessage('Falsche Benutzername oder Kennwort', 'Falsch !'); fp.getEl().unmask(); } }); } else { //Ext.MessageBox.alert('Errors', 'Please fix the errors noted.'); } } } login_win = new Ext.Window({ id: 'ocLoginWindow', title: 'Operatives Controlling - Anmeldung', layout: 'fit', width: 350, height: 200, closable: false, modal: true, loadMask: true, items: formPanel_Login, buttons: [{ text: 'Anmelden', handler: function() { var tmp = new anmelden(formPanel_Login); tmp.exec(); } }], listeners: { show: function(w) { Ext.getCmp('formPanel_Login').getForm().items.items[0].focus(false, true); //w.getEl().mask('OC wird geladen. Bitte warten Sie einen Moment...'); } } }); login_win.show(); }); /** * Based on code found at http://extjs.com/forum/showthread.php?t=5106 * * Modified by Merijn Schering * * Changes: * -Handles value better. Uses value config property as start value. * -Removed changed trigger image because it didn't handle state. * -Added colors config property so you can overide the default color palette * * * @class Ext.form.ColorField * @extends Ext.form.TriggerField * Provides a very simple color form field with a ColorMenu dropdown. * Values are stored as a six-character hex value without the '#'. * I.e. 'ffffff' * @constructor * Create a new ColorField *
Example: *

var cf = new Ext.form.ColorField({
    fieldLabel: 'Color',
    hiddenName:'pref_sales',
    showHexValue:true
});
* @param {Object} config */ Ext.form.ColorField = Ext.extend(function(config){ this.menu = new Ext.menu.ColorMenu(); this.menu.palette.on('select', this.handleSelect, this ); this.menu.on(Ext.apply({}, this.menuListeners, { scope:this })); if(config.colors) { this.menu.palette.colors=config.colors; } //print_r(); Ext.form.ColorField.superclass.constructor.call(this, config); },Ext.form.TriggerField, { /** * @cfg {Boolean} showHexValue * True to display the HTML Hexidecimal Color Value in the field * so it is manually editable. */ showHexValue : false, /** * @cfg {String} triggerClass * An additional CSS class used to style the trigger button. The trigger will always get the * class 'x-form-trigger' and triggerClass will be appended if specified (defaults to 'x-form-color-trigger' * which displays a calendar icon). triggerClass : 'go-form-color-trigger', * */ /** * @cfg {String/Object} autoCreate * A DomHelper element spec, or true for a default element spec (defaults to * {tag: "input", type: "text", size: "10", autocomplete: "off"}) */ // private defaultAutoCreate : {tag: "input", type: "text", size: "1", autocomplete: "off", maxlength:"6"}, /** * @cfg {String} lengthText * A string to be displayed when the length of the input field is * not 3 or 6, i.e. 'fff' or 'ffccff'. */ lengthText: "Color hex values must be either 3 or 6 characters.", //text to use if blank and allowBlank is false blankText: "Must have a hexidecimal value in the format ABCDEF.", /** * @cfg {String} color * A string hex value to be used as the default color. Defaults * to 'FFFFFF' (white). */ //defaultColor: 'FFFFFF', maskRe: /[a-f0-9]/i, // These regexes limit input and validation to hex values regex: /[a-f0-9]/i, //private curColor: 'ffffff', // private validateValue : function(value){ if(!this.showHexValue) { return true; } if(value.length<1) { this.el.setStyle({ 'background-color':'#' + this.defaultColor }); if(!this.allowBlank) { this.markInvalid(String.format(this.blankText, value)); return false } return true; } if(value.length!=3 && value.length!=6 ) { this.markInvalid(String.format(this.lengthText, value)); return false; } this.setColor(value); return true; }, // private validateBlur : function(){ return !this.menu || !this.menu.isVisible(); }, // Manually apply the invalid line image since the background // was previously cleared so the color would show through. markInvalid : function( msg ) { Ext.form.ColorField.superclass.markInvalid.call(this, msg); this.el.setStyle({ 'background-image': 'url(../lib/resources/images/default/grid/invalid_line.gif)' }); }, /** * Returns the current color value of the color field * @return {String} value The hexidecimal color value getValue : function(){ return this.curValue || this.defaultValue || "FFFFFF"; }, */ /** * Sets the value of the color field. Format as hex value 'FFFFFF' * without the '#'. * @param {String} hex The color value */ setValue : function(hex){ Ext.form.ColorField.superclass.setValue.call(this, hex); this.setColor(hex); }, /** * Sets the current color and changes the background. * Does *not* change the value of the field. * @param {String} hex The color value. */ setColor : function(hex) { this.curColor = hex; this.el.setStyle( { 'background-color': '#' + hex, 'background-image': 'none' }); if(!this.showHexValue) { this.el.setStyle({ 'text-indent': '-100px' }); if(Ext.isIE) { this.el.setStyle({ 'margin-left': '100px' }); } } }, // private menuListeners : { select: function(m, d){ this.setValue(d); }, show : function(){ // retain focus styling this.onFocus(); }, hide : function(){ this.focus(); var ml = this.menuListeners; this.menu.un("select", ml.select, this); this.menu.un("show", ml.show, this); this.menu.un("hide", ml.hide, this); } }, //private handleSelect : function(palette, selColor) { this.setValue(selColor); }, // private // Implements the default empty TriggerField.onTriggerClick function to display the ColorPicker onTriggerClick : function(){ if(this.disabled){ return; } this.menu.show(this.el, "tl-bl?"); } }); Ext.reg('colorfield', Ext.form.ColorField); /** * Clone Function * var c = Ext.ux.clone(o); */ Ext.ux.clone = function(o){ if (!o || 'object' !== typeof o) { return o; } var c = 'function' === typeof o.pop ? [] : {}; var p, v; for (p in o) { if (o.hasOwnProperty(p)) { v = o[p]; if (v && 'object' === typeof v) { c[p] = Ext.ux.clone(v); } else { c[p] = v; } } } return c; }; // eo function clone var findLabel = function(field){ var wrapDiv = null; var label = null; //find form-item and label wrapDiv = field.getEl().up('div.x-form-item'); if (wrapDiv) { label = wrapDiv.child('label'); } if (label) { return label; } }; /* Ext.override(Ext.form.Field, { afterRender: function(){ if (this.helpText) { var label = findLabel(this); if (label) { var helpImage = label.createChild({ tag: 'img', src: 'framework/resources/images/custom/tip.gif', style: 'margin-bottom: 0px; margin-left: 5px; padding: 0px;' //, //width: 10, //height: 11 }); Ext.QuickTips.register({ target: helpImage, title: '', text: this.helpText, enabled: true }); } } Ext.form.Field.superclass.afterRender.call(this); this.initEvents(); } }); */ /* Ext.apply(Ext.layout.FormLayout.prototype, { renderItem: function(c, position, target){ if (c && !c.rendered && c.isFormField && c.inputType != 'hidden') { var args = [c.id, c.fieldLabel, c.labelStyle || this.labelStyle || '', this.elementStyle || '', typeof c.labelSeparator == 'undefined' ? this.labelSeparator : c.labelSeparator, (c.itemCls || this.container.itemCls || '') + (c.hideLabel ? ' x-hide-label' : ''), c.clearCls || 'x-form-clear-left']; if (typeof position == 'number') { position = target.dom.childNodes[position] || null; } if (position) { this.fieldTpl.insertBefore(position, args); } else { this.fieldTpl.append(target, args); } var fEl = Ext.get('x-form-el-' + c.id); c.render(fEl); if (c.prefix) { fEl.insertHtml('afterBegin', c.prefix + ' '); } // MARK if (c.suffix) { fEl.insertHtml('beforeEnd', ' ' + c.suffix); } // MARK } else { Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments); } } }); */ Ext.AdvancedPagingToolbar = Ext.extend(Ext.PagingToolbar, { nav_var: false, doLoad: function(start){ var o = {}, pn = this.store.paramNames; o[pn.start] = start || 0; o[pn.limit] = this.pageSize; if (this.nav_var) { o.year = this.nav_var.get("current_year"); o.profitcenter = this.nav_var.get("current_profitcenter"); if (this.nav_var.get("current_letters")) { o.letters = this.nav_var.get("current_letters"); } if (this.nav_var.get("lieferant")) { o.lieferant = this.nav_var.get("lieferant"); } if (this.nav_var.get("kategorie")) { kategorie = this.nav_var.get("kategorie"); } } this.store.load({ params: o }); } }); /** * http://kevin.vanzonneveld.net * + original by: Michael White (http://crestidg.com) * + improved by: Ben Bryan * * example 1: print_r(1, true); * * returns 1: 1 * + little patch from Angel Dimitrov * @param {Object} array * @param {Object} return_val */ function print_r(array, return_val){ var output = "", pad_char = " ", pad_val = 4; var formatArray = function(obj, cur_depth, pad_val, pad_char){ if (cur_depth > 0) { cur_depth++; } var base_pad = repeat_char(pad_val * cur_depth, pad_char); var thick_pad = repeat_char(pad_val * (cur_depth + 1), pad_char); var str = ""; if (obj instanceof Array || obj instanceof Object) { str += "Array\n" + base_pad + "(\n"; for (var key in obj) { if (obj[key] instanceof Array) { str += thick_pad + "[" + key + "] => " + formatArray(obj[key], cur_depth + 1, pad_val, pad_char); } else { str += thick_pad + "[" + key + "] => " + obj[key] + "\n"; } } str += base_pad + ")\n"; } else { str = obj.toString(); } return str; }; var repeat_char = function(len, pad_char){ var str = ""; for (var i = 0; i < len; i++) { str += pad_char; } return str; }; output = formatArray(array, 0, pad_val, pad_char); if (return_val !== true) { alert(output); return true; } else { return output; } } /** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = (function(){ // private property var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // private method for UTF-8 encoding function utf8Encode(string){ string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; } // public method for encoding return { encode: (typeof btoa == 'function') ? function(input){ return btoa(input); } : function(input){ var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = utf8Encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); } return output; } }; })(); Ext.LinkButton = Ext.extend(Ext.Button, { template: new Ext.Template('', '', "
{0}
"), onRender: function(ct, position){ var btn, targs = [this.text || ' ', this.href, this.target || "_self"]; if (position) { btn = this.template.insertBefore(position, targs, true); } else { btn = this.template.append(ct, targs, true); } var btnEl = btn.child("a:first"); btnEl.on('focus', this.onFocus, this); btnEl.on('blur', this.onBlur, this); this.initButtonEl(btn, btnEl); Ext.ButtonToggleMgr.register(this); }, onClick: function(e){ if (e.button != 0) { return; } if (!this.disabled) { this.fireEvent("click", this, e); if (this.handler) { this.handler.call(this.scope || this, this, e); } } } }); // -- Anlagen var nav_cookie_anlagen = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime() + (1000 * 60 * 60)), //1 hour domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_anlagen); nav_cookie_anlagen.set("current_profitcenter", 0); // -- Personal var nav_cookie_personal = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime() + (1000 * 60)), //1 min domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_personal); nav_cookie_personal.set("current_profitcenter", 0); // -- Material var nav_cookie_material = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime()+(1000*60)), //1 min domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_material); nav_cookie_material.set("current_letters", 'all'); // -- Monatsvergleich var nav_cookie_monatsvergleich = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime() + (1000 * 60 * 60)), //1 hour domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_monatsvergleich); nav_cookie_monatsvergleich.set("current_profitcenter", 0); // -- Produktkalkulation var nav_cookie_kalkulation = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime() + (1000 * 60 * 60)), //1 hour domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_kalkulation); nav_cookie_kalkulation.set("current_profitcenter", 0); // -- PC var nav_cookie_pc = new Ext.state.CookieProvider({ path : "/cgi-bin/", expires : new Date(new Date().getTime() + (1000 * 60)), // 1 min domain : "orange" }); Ext.state.Manager.setProvider(nav_cookie_pc); // Ergebnisse var nav_cookie_ergebnisse = new Ext.state.CookieProvider({ path: "/cgi-bin/", expires: new Date(new Date().getTime()+(1000*60*60)), //1 hour domain: "orange" }); Ext.state.Manager.setProvider(nav_cookie_ergebnisse); nav_cookie_ergebnisse.set("details", "0"); nav_cookie_ergebnisse.set("current_profitcenter", 0); function round(value){ return (parseFloat(Math.round(value)) + " Tage"); } oc.PersonalPanel = function(){ var loaded_record; nav_cookie_personal.set("current_year", plan_current); function PersonenGroupView(){ return new Ext.grid.GroupingView({ forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Personen" : "Person"]})', hideGroupedColumn: true }); } function UebersichtGroupView(){ return new Ext.grid.GroupingView({ forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Gruppen" : "Gruppe"]})', hideGroupedColumn: true }); } function deleteRecord(id, record, store){ var assigments = (record.data.TeamsCount ? record.data.TeamsCount + ' Team(s)
' : '') + (record.data.DurchschnitteCount ? record.data.DurchschnitteCount + ' Durchschnitt(e)
' : '') + (record.data.KalkulationenCount ? record.data.KalkulationenCount + ' Kalkulation(en)' : ''); if (assigments.length > 0) { assigments = 'Die nimmt teil an:
' + assigments; } function Result(btn){ if (btn == 'ok') { win = Ext.getCmp('Personal-' + id); if (win) { win.destroy(); } Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: id, target: 'personal' }, success: function(form, action){ //if () store.remove(record); var activeEditWindow = Ext.getCmp('Personal-' + id); if (activeEditWindow) activeEditWindow.destroy(); } }); } } Ext.MessageBox.show({ title: 'Bästätigung', msg: 'Sind Sie sicher, dass Sie ' + (record.data.Vorname ? record.data.Vorname : '') + ' ' + record.data.Name + ' löschen möchten? ' + assigments, width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: Result }); } var storeProfitCenter_dropdown = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=personal&_GET_ALL_PCS', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PCNR' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo){ this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; }, collapse: function(combo){ if (nav_cookie_personal.get("current_profitcenter") == combo.getValue()) return false; nav_cookie_personal.set("current_profitcenter", combo.getValue() || 0); storeYear_dropdown.load({ params: { pc: nav_cookie_personal.get("current_profitcenter") || 0 } }); reloadAllStores(false, combo.getValue()); } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var storeYear_dropdown = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal', method: 'POST', params: { pc: nav_cookie_personal.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, beforequery: function(combo){ this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() || 0 } }); return false; }, collapse: function(combo){ if (nav_cookie_personal.get("current_year") == combo.getValue()) return false; nav_cookie_personal.set("current_year", combo.getValue()); storeProfitCenter_dropdown.load({ params: { year: nav_cookie_personal.get("current_year") } }); reloadAllStores(combo.getValue()); } }, name: 'Year', typeAhead: false, editable: false, store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); /** * @param {Number} selectedId PNR * @param {String} type Personen/Teams/Durchschnitte */ function EditWindow(selectedId, type, record){ var recordLoaded = false; var newId = false; win = Ext.getCmp('Personal-' + selectedId); if (win) { win.show(); win.expand(); return false; } var random_personal_id = random(0, 99999999); /** * @param {boolean} close If the window close on 'no errors' */ var updateTimeInterval = function(field){ if ((selectedId == 1) && (UebersichtGrid.getStore().getCount() == 0)) { return; } if (field.isValid()) { UebersichtGrid.getStore().load(); ZuordnungenGrid.getStore().load(); } } function Save(close){ if (close) { forceClose = true; } var counter = 1; var allDoneCounter = 1; if (newId) { allDoneCounter = 3; } else { if (isStoreDirty(ZuordnungenGrid.getStore())) allDoneCounter++; if (isStoreDirty(UebersichtGrid.getStore())) allDoneCounter++; } function reloadAfterSave(){ if (allDoneCounter !== counter) { //console.log('its too early to reaload ....'); } else { InfoMessage(formPanel.getForm().findField('Name').getValue() + " wurde gespeichert"); win_edit.getEl().unmask(); if (close) { win_edit.destroy(); } switch (type) { case 'Personen': if (PersonenGrid.getEl()) { PersonenGrid.getStore().reload(); } break; case 'Teams': if (TeamsGrid.getEl()) { TeamsGrid.getStore().reload(); } break; case 'Durchschnitte': if (DurchschnitteGrid.getEl()) { DurchschnitteGrid.getStore().reload(); } break; } } } function Verteilungen(){ var array = new Array(); var store = ZuordnungenGrid.getStore(); function executeSave(jsonData){ //console.log('V-executeExecute()'); Ext.Ajax.request({ url: 'io.php?type=grid&execute=calc_zuordnungen', params: { data: jsonData, key: 'PNR,Jahr', table: 'tbl_p_verteilungen' }, success: function(form, action){ counter++; //console.log('Verteilungen counter = ' + counter); if (!close) { if (ZuordnungenGrid.getEl()) { store.reload(); } } reloadAfterSave(); } }); } if (newId) { //console.info('V store.reload'); store.reload({ callback: function(){ store.each(function(record){ record.set('PNR', newId); array.push(record.data); }); store.commitChanges(); var json = Ext.util.JSON.encode(array); executeSave(json); } }); return false; } if (store.getCount() == 0) { return false; } store.each(function(record){ if (record.dirty) { array.push(record.data); } }); if (array.length > 0) { var json = Ext.util.JSON.encode(array); executeSave(json); } } function Jahreswerte(){ var array = new Array(); var store = UebersichtGrid.getStore(); function executeSave(jsonData){ //console.log('J-executeExecute()'); Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'PNR,Jahr', table: 'tbl_p_daten' }, success: function(form, action){ counter++; store.commitChanges(); reloadAfterSave(); } }); } if (newId) { //console.info('J store.reload'); store.reload({ callback: function(){ calculate(); store.each(function(record){ record.set('PNR', newId); array.push(record.data); }); store.commitChanges(); var json = Ext.util.JSON.encode(array); executeSave(json); } }); return false; } if (store.getCount() == 0) { return false; } store.each(function(record){ if (record.dirty) { array.push(record.data); } }); if (array.length > 0) { var json = Ext.util.JSON.encode(array); executeSave(json); } else { return false; } // -- Jahreswerte save.END } var onSaveSuccess = function(form, action){ // update for the save on close function //console.log(record); if (record) { form.updateRecord(record); record.commit(); } //console.log('onSaveSuccess'); if (selectedId == 1) { newId = action.result.id; formPanel.getForm().findField('PNR').setValue(newId); selectedId = newId; if (gkz !== 'P') { formPanel_Jahreswerte.findById('personal-free-' + random_personal_id).store.load({ params: { type: 'free', year: nav_cookie_personal.get("current_year"), id: selectedId, start: 0, limit: oc.limit_records } }); formPanel_Jahreswerte.findById('personal-assigned-' + random_personal_id).store.load({ params: { year: nav_cookie_personal.get("current_year"), id: selectedId } }); } // Reloading and activating the Mitglied panel for new Gruppen / Durchschnitte . END // Activating locked tabitems.START UebersichtGrid.enable(); formPanel_Jahreswerte.enable(); ZuordnungenGrid.enable(); } Jahreswerte(); Verteilungen(); reloadAfterSave(); } // -- Form save.START if (formPanel.form.isValid()) { formPanel.form.submit({ url: 'io.php', params: { id: selectedId, field: 'PNR', table: 'tbl_p_stamm', Typ: type, GKZ: gkz }, success: onSaveSuccess }); win_edit.getEl().mask('Daten werden gespeichert...'); } else { //win_edit.show(); tabs.setActiveTab(formPanel); forceClose = false; Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Felder im Stammdaten aus.'); //cancel hiding window return false; } // -- Form save.END } function setJahreswerte(selId){ if (type !== 'Personen') return; function fAdministrativ(Produktiv){ return parseFloat(100 - Produktiv).toFixed(2); } var row = UebersichtGrid.getStore().getAt(selId); if (!row) { return false; } var Jahreswerte = formPanel_Jahreswerte.getForm(); var Jahr = row.get('Jahr'); var Produktiv = row.get('Produktiv'); var Jahresbruttonlohn = row.get('Jahresbruttolohn'); var Lohnnebenkosten = row.get('Lohnnebenkosten'); var Wochentage = row.get('Wochentage'); var Wochenstunden = row.get('Wochenstunden'); var Arbeitswochen = row.get('Arbeitswochen'); var SK1 = row.get('SK1') || 0; var SK2 = row.get('SK2') || 0; var SK3 = row.get('SK3') || 0; var FZ1 = row.get('FZ1'); var FZ2 = row.get('FZ2'); var FZ3 = row.get('FZ3'); var FZ4 = row.get('FZ4'); var SonstigeKosten = row.get('SonstigeKosten'); var Kosten = row.get('Kosten'); //row.data['Fehlzeiten'] = Fehlzeiten; var Stunden = row.get('Stunden'); var Stundensatz = row.get('Stundensatz'); //row.data['AdminStunden'] = Stunden_Administrativ; var Stunden_Produktiv = row.get('ProduktivStunden'); var Kosten_Administrativ = row.get('AdminKosten'); var Kosten_Produktiv = row.get('ProduktivKosten'); // Setting values in Form.START Jahreswerte.findField('Administrativ').setValue(fAdministrativ(Produktiv)); Jahreswerte.findField('Produktiv').setValue(Produktiv); Jahreswerte.findField('SonstigeKosten').setValue(SonstigeKosten); Jahreswerte.findField('Kosten').setValue(Kosten); //Jahreswerte.findField('Fehlzeiten').setValue(Fehltage); Jahreswerte.findField('Stunden').setValue(Stunden); Jahreswerte.findField('Stundensatz').setValue(Stundensatz); //Jahreswerte.findField('AdminStunden').setValue(Stunden_Administrativ); Jahreswerte.findField('ProduktivStunden').setValue(Stunden_Produktiv); //Jahreswerte.findField('AdminKosten').setValue(Kosten_Administrativ); Jahreswerte.findField('ProduktivKosten').setValue(Kosten_Produktiv); Jahreswerte.findField('Jahr').setValue(Jahr); //Jahreswerte.findField('Administrativ').setValue(Administrativ); Jahreswerte.findField('Jahresbruttolohn').setValue(Jahresbruttonlohn); Jahreswerte.findField('Lohnnebenkosten').setValue(Lohnnebenkosten); Jahreswerte.findField('Wochentage').setValue(Wochentage); Jahreswerte.findField('Wochenstunden').setValue(Wochenstunden); Jahreswerte.findField('Arbeitswochen').setValue(Arbeitswochen); Jahreswerte.findField('SK1').setValue(SK1); //Versicherungen Jahreswerte.findField('SK2').setValue(SK2); //Angaben Jahreswerte.findField('SK3').setValue(SK3); //Urlaub_und_Weih Jahreswerte.findField('FZ1').setValue(FZ1); //Urlaub Jahreswerte.findField('FZ2').setValue(FZ2); //Krankheit Jahreswerte.findField('FZ3').setValue(FZ3); //Fortbildung Jahreswerte.findField('FZ4').setValue(FZ4); //Feiertage // Setting values in Form.END // Recalculating result fields formPanel_Jahreswerte.setTitle("Jahreswerte " + Jahr); calculate(); } /** * Calculate the new values * * @param {Object} e The actual text- or numberfield */ function calculate(e){ ////console.log('------------------------------calculate()------------------------------'); if (gkz !== 'P') return; function applyValuesForNewRecords(){ } function editUebersichtRecord(record, recordKey, value, silent){ var presentValue = record.get(recordKey) || 0; var newValue; if (isNaN(value)) { newValue = 0; } else { newValue = value; } if (Number(newValue) !== (Number(presentValue))) { if (silent) { record.data[recordKey] = newValue; ////console.log('silent update of ' + recordKey + ' : ' + record.get(recordKey)); } record.set(recordKey, newValue); ////console.log(recordKey + ' : ' + presentValue + ' != ' + newValue); } } function fSonstigeKosten(SK1, SK2, SK3){ kosten = parseFloat(SK1 + SK2 + SK3).toFixed(2) return kosten; } function fKosten(Jahresbruttonlohn, Lohnnebenkosten, SonstigeKosten){ return parseFloat(Number(Jahresbruttonlohn) + Number(Lohnnebenkosten) + Number(SonstigeKosten)).toFixed(2); } function fFehltage(FZ1, FZ2, FZ3, FZ4){ return (Number(FZ1) + Number(FZ2) + Number(FZ3) + Number(FZ4)); } function fStunden(Arbeitswochen, Wochentage, Fehltage, Wochenstunden){ return parseInt((Arbeitswochen * Wochentage - Fehltage) * (Wochenstunden / Wochentage)); } function fStundensatz(Kosten, Stunden){ return parseFloat(Kosten / Stunden).toFixed(2); } function fStunden_Administrativ(Administrativ, Stunden){ return parseInt((Administrativ / 100) * Stunden); } function fStunden_Produktiv(Stunden, Stunden_Administrativ){ return parseInt(Stunden - Stunden_Administrativ); } function fKosten_Administrativ(Administrativ, Kosten){ return parseFloat((Administrativ / 100) * Kosten); } function fKosten_Produktiv(Kosten, Kosten_Administrativ){ return parseFloat(Kosten - (Administrativ / 100) * Kosten); } function fProduktiv(Administrativ){ return parseInt(100 - Administrativ); } if (gkz == 'P') { var Jahreswerte = formPanel_Jahreswerte.getForm(); // Getting values from editable fields.START var Jahr = Jahreswerte.findField('Jahr').getValue(); var Administrativ = Jahreswerte.findField('Administrativ').getValue(); //var Produktiv = Jahreswerte.findField('Produktiv').getValue(); var Jahresbruttonlohn = Jahreswerte.findField('Jahresbruttolohn').getValue(); var Lohnnebenkosten = Jahreswerte.findField('Lohnnebenkosten').getValue(); var Wochentage = Jahreswerte.findField('Wochentage').getValue(); var Wochenstunden = Jahreswerte.findField('Wochenstunden').getValue(); var Arbeitswochen = Jahreswerte.findField('Arbeitswochen').getValue(); var SK1 = Jahreswerte.findField('SK1').getValue(); //Versicherungen var SK2 = Jahreswerte.findField('SK2').getValue(); //Angaben var SK3 = Jahreswerte.findField('SK3').getValue(); //Urlaub_und_Weih var FZ1 = Jahreswerte.findField('FZ1').getValue(); //Urlaub var FZ2 = Jahreswerte.findField('FZ2').getValue(); //Krankheit var FZ3 = Jahreswerte.findField('FZ3').getValue(); //Fortbildung var FZ4 = Jahreswerte.findField('FZ4').getValue(); //Feiertage // Getting values from editable fields.END // Calculating form values.START var Produktiv = fProduktiv(Administrativ); ////console.log('Produktiv =' + Produktiv); var SonstigeKosten = fSonstigeKosten(SK1, SK2, SK3); var Kosten = fKosten(Jahresbruttonlohn, Lohnnebenkosten, SonstigeKosten); var Fehltage = fFehltage(FZ1, FZ2, FZ3, FZ4); var Stunden = fStunden(Arbeitswochen, Wochentage, Fehltage, Wochenstunden); var Stundensatz = fStundensatz(Kosten, Stunden); var Stunden_Administrativ = fStunden_Administrativ(Administrativ, Stunden); var Stunden_Produktiv = fStunden_Produktiv(Stunden, Stunden_Administrativ); var Kosten_Administrativ = fKosten_Administrativ(Administrativ, Kosten); var Kosten_Produktiv = fKosten_Produktiv(Kosten, Kosten_Administrativ); // Calculating form values.END // Setting values in Form.START Jahreswerte.findField('Produktiv').setValue(Produktiv); Jahreswerte.findField('SonstigeKosten').setValue(SonstigeKosten); Jahreswerte.findField('Kosten').setValue(Kosten); Jahreswerte.findField('Fehlzeiten').setValue(Fehltage); Jahreswerte.findField('Stunden').setValue(Stunden); Jahreswerte.findField('Stundensatz').setValue(Stundensatz); Jahreswerte.findField('AdminStunden').setValue(Stunden_Administrativ); Jahreswerte.findField('ProduktivStunden').setValue(Stunden_Produktiv); Jahreswerte.findField('AdminKosten').setValue(Kosten_Administrativ); Jahreswerte.findField('ProduktivKosten').setValue(Kosten_Produktiv); // Setting values in Form.END // updating values in the current Uebersicht grid for the edited year.START current_record = UebersichtGrid.getStore().getById(String(Jahr)); //print_r(current_record.data); if (current_record) { editUebersichtRecord(current_record, 'Administrativ', Administrativ, true); editUebersichtRecord(current_record, 'Jahresbruttolohn', Jahresbruttonlohn); editUebersichtRecord(current_record, 'Lohnnebenkosten', Lohnnebenkosten); editUebersichtRecord(current_record, 'Wochentage', Wochentage); editUebersichtRecord(current_record, 'Wochenstunden', Wochenstunden); editUebersichtRecord(current_record, 'Arbeitswochen', Arbeitswochen); editUebersichtRecord(current_record, 'SK1', SK1); editUebersichtRecord(current_record, 'SK2', SK2); editUebersichtRecord(current_record, 'SK3', SK3); editUebersichtRecord(current_record, 'FZ1', FZ1); editUebersichtRecord(current_record, 'FZ2', FZ2); editUebersichtRecord(current_record, 'FZ3', FZ3); editUebersichtRecord(current_record, 'FZ4', FZ4); editUebersichtRecord(current_record, 'SonstigeKosten', SonstigeKosten); editUebersichtRecord(current_record, 'Kosten', Kosten); editUebersichtRecord(current_record, 'Fehlzeiten', Fehltage); editUebersichtRecord(current_record, 'Stunden', Stunden); editUebersichtRecord(current_record, 'Stundensatz', Stundensatz); editUebersichtRecord(current_record, 'ProduktivStunden', Stunden_Produktiv); editUebersichtRecord(current_record, 'AdminKosten', Kosten_Administrativ); editUebersichtRecord(current_record, 'ProduktivKosten', Kosten_Produktiv); editUebersichtRecord(current_record, 'Produktiv', Produktiv); } } // updating values in the current Uebersicht grid for the edited year.END // recalculating all data in the Uebersicht grid (all years).START UebersichtGrid.getStore().each(function(record){ // setting default values in grid.START if (Number(record.get('PNR')) == 1) { editUebersichtRecord(record, 'PNR', selectedId); editUebersichtRecord(record, 'Wochentage', 5); editUebersichtRecord(record, 'Wochenstunden', 40); editUebersichtRecord(record, 'Jahresbruttolohn', 1); editUebersichtRecord(record, 'Arbeitswochen', 52); editUebersichtRecord(record, 'Administrativ', 100); editUebersichtRecord(record, 'FZ1', dFZ1_value); editUebersichtRecord(record, 'FZ2', dFZ2_value); editUebersichtRecord(record, 'FZ3', dFZ3_value); editUebersichtRecord(record, 'FZ4', dFZ4_value); } // setting default values in grid.END if ((current_record) && (record.get('Jahr') == current_record.get('Jahr'))) { } else { ////console.log('------------------------ calculate store.each! ' + record.get('Jahr') + '------------------------'); editUebersichtRecord(record, 'SonstigeKosten', fSonstigeKosten(record.get('SK1'), record.get('SK2'), record.get('SK3'))); editUebersichtRecord(record, 'Kosten', fKosten(record.get('Jahresbruttolohn'), record.get('Lohnnebenkosten'), record.get('SonstigeKosten'))); editUebersichtRecord(record, 'Fehlzeiten', fFehltage(record.get('FZ1'), record.get('FZ2'), record.get('FZ3'), record.get('FZ4'))); editUebersichtRecord(record, 'Stunden', fStunden(record.get('Arbeitswochen'), record.get('Wochentage'), record.get('Fehlzeiten'), record.get('Wochenstunden'))); editUebersichtRecord(record, 'Stundensatz', fStundensatz(record.get('Kosten'), record.get('Stunden'))); editUebersichtRecord(record, 'ProduktivStunden', fStunden_Produktiv(record.get('Stundensatz'), fStunden_Administrativ(record.get('Administrativ'), record.get('Stunden')))); editUebersichtRecord(record, 'AdminKosten', fKosten_Administrativ(record.get('Administrativ'), record.get('Kosten'))); editUebersichtRecord(record, 'ProduktivKosten', fKosten_Produktiv(record.get('Kosten'), record.get('AdminKosten'))); } }); UebersichtGrid.reconfigure(UebersichtGrid.getStore(), UebersichtGrid.getColumnModel()); // recalculating all data in the Uebersicht grid (all years).END } function formfield_Nr(){ var nr = new Ext.form.Hidden({ fieldLabel: 'Nr.', name: 'PNR' }); return nr; } function formfield_Nummer(){ var Nummer = new Ext.form.TextField({ fieldLabel: 'Nummer', name: 'Nummer', allowBlank: false, listeners: { change: function(field, newValue){ if (field.isValid()) { win_edit.getEl().mask('Überprüfen von Personalnummer, bitte warten Sie ...'); // check if this Personal Nummmer already exists in the DB Ext.Ajax.request({ url: 'api.php?a=check_if_personal_exists', params: { Nummer: newValue, PNR: formPanel.getForm().findField('PNR').getValue() }, success: function(result, request){ var res = Ext.util.JSON.decode(result.responseText); if (res.success) { if ((res.PNR) && (res.PNR !== selectedId)) { alert('Diese Personalnummer ist schon in der Datenbank. Bitte kontrollieren Sie Ihre Angaben'); field.valid = false; field.setValue(); field.focus(); } } else { print_r(res); } win_edit.getEl().unmask(); } }); } } } }); return Nummer; } function formfield_Vorname(){ var Vorname = new Ext.form.TextField({ fieldLabel: 'Vorname', name: 'Vorname', allowBlank: false }); return Vorname; } function Personen(selectedId){ var Jahr_edit = formfield_Jahr(); var Nr_edit = formfield_Nr(); //Nr.on('update') var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Vorname_edit = formfield_Vorname(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", updateTimeInterval); Bis_edit.on("change", updateTimeInterval); var formPanel = new Ext.form.FormPanel({ title: 'Stammdaten', baseCls: 'x-plain', labelWidth: 100, labelSeparator: ' ', bodyStyle: 'padding:15px', trackResetOnLoad: true, defaults: { width: 150 }, listeners: { activate: function(){ if ((record) && (!recordLoaded)) { loaded_record = record.copy(); recordLoaded = true; formPanel.getForm().loadRecord(record); formPanel.getForm().reset(); } } }, url: 'api.php?a=list&t=personal&id=' + selectedId + "&year=" + nav_cookie_personal.get("current_year"), items: [Nr_edit, Nummer_edit, Vorname_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, Bemerkung_edit, Jahr_edit] }); return formPanel; } function euroField(label, name, minValue){ var field = new Ext.form.CompositeField({ items: [{ xtype: 'numberfield', fieldLabel: label, name: name, decimalSeparator: ',', decimalPrecision: 2, style: 'text-align: right', width: 94, allowBlank: false, minValue: minValue, listeners: { change: calculate } }, { xtype: 'displayfield', value: '€' }] }); return field; } function Jahreswerte(selectedId, year){ var Jahr_edit = new Ext.form.TextField({ fieldLabel: 'Jahr', name: 'Jahr', readOnly: true, cls: 'readOnly', style: 'text-align: right' }); var SonstigeKosten_edit = new Ext.form.NumberField({ fieldLabel: 'Sonstige Kosten', name: 'SonstigeKosten', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, width: 94, cls: "readOnly", style: 'text-align: right' //suffix: '€' }); var Arbeitswochen_edit = new Ext.form.NumberField({ fieldLabel: 'Arbeitswochen', name: 'Arbeitswochen', allowBlank: false, minValue: 1, allowDecimals: false }); Arbeitswochen_edit.on('change', calculate); var Wochentage_edit = new Ext.form.NumberField({ fieldLabel: 'Wochentage', name: 'Wochentage', minValue: 1, maxValue: 7, allowBlank: false, allowDecimals: false }); Wochentage_edit.on('change', calculate); var Wochenstunden_edit = new Ext.form.NumberField({ fieldLabel: 'Wochenstunden', allowDecimals: false, name: 'Wochenstunden', allowBlank: false, minValue: 1 }); Wochenstunden_edit.on('change', calculate); var Fehltage_edit = new Ext.form.TextField({ fieldLabel: 'Fehltage', name: 'Fehlzeiten', readOnly: true, cls: 'readOnly' }); var Urlaub_edit = new Ext.form.NumberField({ fieldLabel: dFZ1_label, name: 'FZ1', allowBlank: false, minValue: 0, allowDecimals: false }); Urlaub_edit.on('change', calculate); var Krankheit_edit = new Ext.form.NumberField({ fieldLabel: dFZ2_label, name: 'FZ2', allowBlank: false, minValue: 0, allowDecimals: false }); Krankheit_edit.on('change', calculate); var Fortbildung_edit = new Ext.form.NumberField({ fieldLabel: dFZ3_label, name: 'FZ3', allowBlank: false, minValue: 0, allowDecimals: false }); Fortbildung_edit.on('change', calculate); var Feiertage_edit = new Ext.form.NumberField({ fieldLabel: dFZ4_label, name: 'FZ4', allowBlank: false, minValue: 0, allowDecimals: false }); Feiertage_edit.on('change', calculate); var Administrativ_edit = new Ext.form.NumberField({ fieldLabel: 'Administrativ', name: 'Administrativ', allowBlank: false, minValue: 0, maxValue: 100, style: 'text-align: right', decimalPrecision: '.' }); Administrativ_edit.on('change', calculate); var Stunden_edit = new Ext.form.TextField({ fieldLabel: 'Stunden', name: 'Stunden', allowDecimals: false, decimalPrecision: 2, readOnly: true, width: 120, //minValue: 0, //suffix: 'h', cls: 'important_input', style: 'text-align: right' }); var Kosten_edit = new Ext.form.NumberField({ fieldLabel: 'Kosten', name: 'Kosten', readOnly: true, decimalSeparator: ',', decimalPrecision: 2, width: 120, allowBlank: false, cls: 'important_input', style: 'text-align: right' }); var Stundensatz_edit = new Ext.form.NumberField({ fieldLabel: 'Stundensatz', name: 'Stundensatz', readOnly: true, decimalSeparator: ',', decimalPrecision: 2, width: 120, cls: 'important_input', style: 'text-align: right' }); var Stunden_Administrativ_edit = new Ext.form.TextField({ fieldLabel: 'Administrativ', name: 'AdminStunden', readOnly: true, width: 120, cls: 'readOnly', style: 'text-align: right' }); var Stunden_Produktiv_edit = new Ext.form.TextField({ fieldLabel: 'Produktiv', name: 'ProduktivStunden', allowDecimals: false, decimalPrecision: 1, width: 120, readOnly: true, cls: 'readOnly', style: 'text-align: right' }); var Kosten_Administrativ_edit = new Ext.form.NumberField({ fieldLabel: 'Administrativ', decimalSeparator: ',', decimalPrecision: 2, name: 'AdminKosten', width: 120, readOnly: true, cls: 'readOnly', style: 'text-align: right' }); var Kosten_Produktiv_edit = new Ext.form.NumberField({ fieldLabel: 'Produktiv', name: 'ProduktivKosten', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, width: 120, cls: 'readOnly', style: 'text-align: right' }); var Produktiv_edit = new Ext.form.TextField({ fieldLabel: 'Produktiv', name: 'Produktiv', hideLabel: true, hidden: true }); var formPanel_Jahreswerte = new Ext.form.FormPanel({ listeners: { activate: function(arguments){ var von = Date.parseDate(formPanel.getForm().findField('Von').value, 'd.m.Y'); if (von) { var year = von.getFullYear(); } else { var year = nav_cookie_personal.get('current_year'); } if (UebersichtGrid.getStore().getCount() == 0) { formPanel_Jahreswerte.getEl().mask('Jahreswerte werden geladen...'); UebersichtGrid.getStore().load({ callback: function(store){ selId = UebersichtGrid.getStore().indexOfId(String(nav_cookie_personal.get("current_year"))); if (selId == -1) { selId = UebersichtGrid.getStore().indexOfId(String(year)); } calculate(); UebersichtGrid.getSelectionModel().selectRow(selId); setJahreswerte(selId); formPanel_Jahreswerte.getEl().unmask(); } }); } else { selectedRow = UebersichtGrid.getSelectionModel().getSelected(); if (selectedRow) { selId = UebersichtGrid.getStore().indexOfId(UebersichtGrid.getSelectionModel().getSelected().id); } else { selId = UebersichtGrid.getStore().indexOfId(String(year)); UebersichtGrid.getSelectionModel().selectRow(selId); } setJahreswerte(selId); } formPanel_Jahreswerte.getForm().findField('Jahresbruttolohn').focus(); } }, title: 'Jahreswerte ' + nav_cookie_personal.get("current_year"), labelWidth: 105, bodyStyle: 'padding:5px;', layout: 'column', items: [{ defaults: { anchor: '90%' }, columnWidth: 0.31, layout: 'form', border: false, items: [Jahr_edit, euroField('Jahresbruttolohn', 'Jahresbruttolohn', 1), euroField('Lohnnebenkosten', 'Lohnnebenkosten', 0), { labelSeparator: ' ', hidden: true }, { xtype: 'displayfield', labelSeparator: ' ', hidden: true //value: '' }, { xtype: 'compositefield', items: [SonstigeKosten_edit, { xtype: 'displayfield', value: '€' }] }, euroField(dSK1_label, 'SK1', 0), euroField(dSK2_label, 'SK2', 0), euroField(dSK3_label, 'SK3', 0)] }, { defaults: { anchor: '90%', style: 'text-align: right', decimalPrecision: 2 }, columnWidth: 0.31, layout: 'form', border: false, items: [Arbeitswochen_edit, Wochentage_edit, Wochenstunden_edit, { xtype: 'displayfield', labelSeparator: ' ', hidden: true }, Fehltage_edit, Urlaub_edit, Krankheit_edit, Fortbildung_edit, Feiertage_edit] }, { defaults: { anchor: '90%', style: 'text-align: right' }, columnWidth: 0.38, layout: 'form', border: false, labelWidth: 100, items: [{ xtype: 'compositefield', items: [Administrativ_edit, { xtype: 'displayfield', value: '%' }] }, Produktiv_edit, { labelSeparator: ' ', hidden: true }, { xtype: 'fieldset', title: 'Stunden', autoHeight: true, defaults: { anchor: '98%' }, items: [{ xtype: 'compositefield', items: [Stunden_Administrativ_edit, { xtype: 'displayfield', value: 'h' }] }, { xtype: 'compositefield', items: [Stunden_Produktiv_edit, { xtype: 'displayfield', value: 'h' }] }] }, { xtype: 'fieldset', title: 'Kosten', autoHeight: true, defaults: { anchor: '98%' }, items: [{ xtype: 'compositefield', items: [Kosten_Administrativ_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Kosten_Produktiv_edit, { xtype: 'displayfield', value: '€' }] }] }, { xtype: 'fieldset', title: 'Gesamt', //autoHeight: true, defaults: { anchor: '98%' }, items: [{ xtype: 'compositefield', items: [Stunden_edit, { cls: 'important_input', xtype: 'displayfield', value: 'h' }] }, { xtype: 'compositefield', items: [Kosten_edit, { cls: 'important_input', xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Stundensatz_edit, { cls: 'important_input', xtype: 'displayfield', value: '€' }] }] }] }] }); return formPanel_Jahreswerte; } function Uebersicht(selectedId){ var Uebersichtcm = new Ext.grid.ColumnModel([{ header: "Jahr", dataIndex: 'Jahr' }, { header: "Bruttolohn", dataIndex: 'Jahresbruttolohn', renderer: 'deMoney', align: 'right' }, { header: "Nebenkosten", dataIndex: 'Lohnnebenkosten', renderer: 'deMoney', align: 'right' }, { header: "Sonstige", dataIndex: 'SonstigeKosten', renderer: 'deMoney', align: 'right' }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right' }, { header: "Fehlzeiten", dataIndex: 'Fehlzeiten', align: 'right' }, { header: "Stunden", dataIndex: 'Stunden', align: 'right', renderer: 'hour' }, { header: "Produktiv", dataIndex: 'Produktiv', align: 'right', hidden: true }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right' }]); // by default columns are sortable Uebersichtcm.defaultSortable = true; // create the Data Store var storeUebersicht = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=personal_uebersicht&id=' + selectedId + '&_LOAD_JAHRESWERTE_FOR_SINGLE_USER' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Jahr' }, [{ name: 'Jahr' }, { name: 'PNR' }, { name: 'GKZ' }, { name: 'Jahresbruttolohn', type: 'float' }, { name: 'Lohnnebenkosten', type: 'float' }, { name: 'SonstigeKosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Arbeitswochen' }, { name: 'Wochentage' }, { name: 'Wochenstunden' }, { name: 'Fehlzeiten' }, { name: 'Stunden' }, { name: 'Produktiv', type: 'float' }, { name: 'ProduktivStunden' }, { name: 'ProduktivKosten', type: 'float' }, { name: 'AdminStunden', type: 'float' }, { name: 'AdminKosten', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'SK1', type: 'float' }, { name: 'SK2', type: 'float' }, { name: 'SK3', type: 'float' }, { name: 'SK4', type: 'float' }, { name: 'SK5', type: 'float' }, { name: 'FZ1', type: 'float' }, { name: 'FZ2', type: 'float' }, { name: 'FZ3', type: 'float' }, { name: 'FZ4', type: 'float' }, { name: 'FZ5', type: 'float' }]) }); copyData = function(){ var selectedRow = UebersichtGrid.getSelectionModel().getSelected(); if (selectedRow) { clipboard = Ext.ux.clone(selectedRow.data); clipboard_zuordnungen = Ext.ux.clone(ZuordnungenGrid.getStore().getById(selectedRow.id).data); InfoMessage("Die Daten wurden in den Zwischenspeicher kopiert."); } } pastData = function(){ //TO-DO } var clipboard = null; var UebersichtGrid = new oc.Grid({ store: storeUebersicht, sm: new Ext.grid.RowSelectionModel({ singleSelect: true }), cm: Uebersichtcm, viewConfig: { forceFit: true }, title: 'Übersicht', bbar: [{ text: 'Kopieren', disabled: ((type !== 'Personen') ? true : false), iconCls: 'icon-copy', handler: function(){ if (ZuordnungenGrid.getStore().getCount() == 0) { ZuordnungenGrid.getStore().load({ callback: copyData }); } else { copyData(); } } }, '-', { text: 'Einfügen', disabled: ((type !== 'Personen') ? true : false), iconCls: 'icon-page-paste', handler: function(selId){ var selectedRow = UebersichtGrid.getSelectionModel().getSelected(); var change_edit = new Ext.form.NumberField({ name: 'procent', hideLabel: true, value: 100, allowBlank: false, minValue: 1, width: 120, decimalSeparator: '.', style: 'text-align: right' }); change_edit.setValue(100); if (selectedRow && clipboard) { win = new Ext.xWin({ title: 'von ' + clipboard.Jahr + ' auf ' + selectedRow.data.Jahr + '',//'Prozentuale Änderung?', height: 110, width: 200, resizable: false, modal: true, items: [{ xtype: 'compositefield', items: [change_edit, { xtype: 'displayfield', value: '%' }], border: false }], buttons: [{ text: 'Einfügen', iconCls: 'icon-page-paste', scope: this, handler: function(){ if (change_edit.isValid()) { // Paste Jahreswerte data = Ext.ux.clone(clipboard); change = Number(change_edit.getValue()) / 100; //data['Jahresbruttolohn'] = data['Jahresbruttolohn'] * change; //data['Lohnnebenkosten'] = data['Lohnnebenkosten'] * change; //data['SK1'] = data['SK1'] * change; //data['SK2'] = data['SK2'] * change; //data['SK3'] = data['SK3'] * change; //data['SK4'] = data['SK4'] * change; //data['Kosten'] = data['Kosten'] * change; //data['Stundensatz'] = data['Stundensatz'] * change; //selectedRow.data = data; selectedRow.data = data; //selectedRow.data.Jahr = Number(selectedRow.id); selectedRow.set('Jahresbruttolohn', data['Jahresbruttolohn'] * change); selectedRow.set('Lohnnebenkosten', data['Lohnnebenkosten'] * change); selectedRow.set('SK1', data['SK1'] * change); selectedRow.set('SK2', data['SK2'] * change); selectedRow.set('SK3', data['SK3'] * change); selectedRow.set('SK4', data['SK4'] * change); selectedRow.set('Kosten', data['Kosten'] * change); selectedRow.set('Stundensatz', data['Stundensatz'] * change); selectedRow.set('Jahr', Number(selectedRow.id)); //selectedRow.markDirty(); UebersichtGrid.reconfigure(storeUebersicht, UebersichtGrid.getColumnModel()); // Paste Zuordnungen recordZuordnungen = ZuordnungenGrid.store.getById(selectedRow.id); recordZuordnungen.data = Ext.ux.clone(clipboard_zuordnungen); recordZuordnungen.data.Jahr = Number(recordZuordnungen.id); recordZuordnungen.markDirty(); ZuordnungenGrid.reconfigure(ZuordnungenGrid.store, ZuordnungenGrid.getColumnModel()); InfoMessage("Die Daten wurden erfolgreich übernommen."); win.hide(); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win.close(); } }] }); win.show(); change_edit.setValue(100); } } }] }); return UebersichtGrid; } // end Uebersicht() function Zuordnungen(selectedId){ var ZuordnungenGrid = new oc.zGrid({ ztype: 'personal', selectedId: selectedId }); return ZuordnungenGrid; } function Teams(selectedId){ var Jahr_edit = formfield_Jahr(); var Nr_edit = formfield_Nr(); var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); //var ProfitCenter_edit = formfield_Profitcenter(nav_cookie_personal); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", updateTimeInterval); Bis_edit.on("change", updateTimeInterval); var formPanel = new Ext.form.FormPanel({ title: 'Stammdaten', baseCls: 'x-plain', labelWidth: 100, labelSeparator: ' ', bodyStyle: 'padding:15px', defaults: { width: 150 }, url: 'api.php?a=list&t=personal&id=' + selectedId + "&year=" + nav_cookie_personal.get("current_year"), listeners: { afterlayout: function(){ if (record) { loaded_record = record.copy(); formPanel.getForm().loadRecord(record); } } }, items: [Nr_edit, Nummer_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, Bemerkung_edit, Jahr_edit] }); return formPanel; } // end Teams() function Mitglieder(gkz, selectedId, year){ var sum_type; switch (gkz) { case 'G': sum_type = 'sum'; break; case 'M': sum_type = 'average'; break; } var action_add = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-plus', //qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ if (selectedId == 1) { selectedId = formPanel.getForm().findField('PNR').getValue(); } win_edit.getEl().mask('Summen werden neukalkuliert. Bitte warten Sie ...'); storeTeamMembersFree.remove(record); storeTeamMembersAssigned.add(record); Ext.Ajax.request({ url: 'api.php', params: { id: selectedId, a: 'assign_a_personal', PNR: selectedId, GKZ: gkz, MPNR: record.data.PNR, MGKZ: 'P', table: 'rel_p_gruppen', field: 'PNR,MPNR' }, method: 'POST', success: function(result, request){ var result = Ext.util.JSON.decode(result.responseText); win_edit.getEl().unmask(); if (result.success == true) { UebersichtGrid.getStore().reload(); } else { storeTeamMembersFree.rejectChanges(); storeTeamMembersAssigned.rejectChanges(); xErrorMessage({ title: 'Fehler auf dem server! (delete)', text: result.errorInfo }); } } }); }, tooltip: 'Person Einfügen' }] }); var action_remove = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ win_edit.getEl().mask('Summen werden neukalkuliert. Bitte warten Sie ...'); Ext.Ajax.request({ url: 'api.php', params: { a: 'remove_a_personal', personal_id: record.data.PNR, id: selectedId, GKZ: gkz, type: type }, method: 'GET', success: function(result, request){ win_edit.getEl().unmask(); var result = Ext.util.JSON.decode(result.responseText); if (result.success == false) { xErrorMessage({ title: 'Fehler auf dem server! (delete)', text: result.errorInfo }); } storeTeamMembersFree.add(record); storeTeamMembersAssigned.remove(record); UebersichtGrid.getStore().reload(); } }); }, tooltip: 'Person entfernen' }] }); // create the data store for the free members var storeTeamMembersFree = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=team_members&id=' + selectedId + '&year=' + year + '&type=free&gkz=' + gkz + '&_LOAD_ALL_MOMBERS_OUTSIDE_GROUP=' + gkz + '|' + selectedId + '|' + year, method: 'POST', baseParams: { start: 0, limit: oc.limit_records } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'GKZ' }, { name: 'Nummer' }, { name: 'PNR' }, { name: 'full_name' }, { name: 'Name' }, { name: 'Vorname' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }]) }); // create the data store for the assigned members var storeTeamMembersAssigned = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=team_members&id=' + selectedId + '&year=' + year + '&_LOAD_ALL_MEMBERS_OF_GROUP=' + gkz + '|' + selectedId + '|' + year, method: 'POST', baseParams: { id: selectedId, year: year } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR' }, [{ name: 'PNR' }, { name: 'full_name' }, { name: 'Name' }, { name: 'Nummer' }, { name: 'Vorname' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }]) }); commonCm = function(action){ return new Ext.grid.ColumnModel([{ header: "Nr", dataIndex: 'Nummer', width: 50 }, { header: "Name", dataIndex: 'full_name', width: 200 }, { header: "Funktion", dataIndex: 'Funktion' }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: sum_type }, action]); } var TeamMembersFreeGrid = new oc.Grid({ listeners: { render: function(grid){ grid.getStore().load(); } }, id: 'personal-free-' + random_personal_id, title: 'Personal', store: storeTeamMembersFree, cm: commonCm(action_add), header: true, viewConfig: { forceFit: true }, plugins: [new oc.Search({ disableIndexes: ['full_name', 'Stundensatz'], fieldsprefix: 'tbl_p_stamm.', width: 200 }), action_add], bbar: [new Ext.PagingToolbar({ pagesize: oc.limit_records, store: storeTeamMembersFree, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden", width: 505 }), ' '] }); var TeamMembersAssignedGrid = new oc.Grid({ listeners: { render: function(grid){ grid.getStore().load(); } }, viewConfig: { forceFit: true }, id: 'personal-assigned-' + random_personal_id, title: 'Mitglieder dieser Gruppe', header: true, store: storeTeamMembersAssigned, cm: commonCm(action_remove), plugins: [new Ext.ux.grid.GridSummary(), action_remove] }); var panelFree = new Ext.Panel({ layout: 'fit', region: 'center', border: false, items: TeamMembersFreeGrid }); var panelAssigned = new Ext.Panel({ listeners: { render: function(){ //TeamMembersAssignedGrid.getStore().load(); } }, region: 'north', layout: 'fit', //split: true, border: false, height: 190, items: TeamMembersAssignedGrid }); var MitgliederPanel = new Ext.Panel({ //id: 'formPanel_Jahreswerte', title: 'Mitglieder ' + nav_cookie_personal.get("current_year"), deferredRender: false, border: false, height: 400, layout: 'border', items: [panelFree, panelAssigned] }); //storeTeamMembersFree.load(); //storeTeamMembersAssigned.load(); return MitgliederPanel; } // end Mitglieder() var UebersichtGrid = Uebersicht(selectedId); switch (type) { case 'Personen': var gkz = 'P'; var formPanel = Personen(selectedId); var formPanel_Jahreswerte = Jahreswerte(selectedId, nav_cookie_personal.get("current_year")); break; case 'Teams': var gkz = 'G'; var formPanel = Teams(selectedId); var formPanel_Jahreswerte = Mitglieder(gkz, selectedId, nav_cookie_personal.get("current_year")); break; case 'Durchschnitte': var gkz = 'M'; var formPanel = Teams(selectedId); var formPanel_Jahreswerte = Mitglieder(gkz, selectedId, nav_cookie_personal.get("current_year")); break; } var ZuordnungenGrid = Zuordnungen(selectedId); var tabs = new Ext.TabPanel({ layoutOnTabChange: true, deferredRender: false, border: false, //autoScroll: true, activeTab: 0, items: [formPanel, UebersichtGrid, formPanel_Jahreswerte, ZuordnungenGrid] }); function compareRecords(rec1, rec2){ for (var i in rec1) { //console.log(rec1[i] + "/" + rec2[i]); if (rec1[i] !== rec2[i]) { if (rec1[i] === '' && rec2[i] === null) { //console.log('!!!!!'); } else { return false; } } } return true; } var forceClose = false; var win_edit = new Ext.Window({ //modal: true, closeAction: 'destroy', id: 'Personal-' + selectedId, layout: 'fit', collapsible: true, iconCls: 'icon-user-suit', title: 'Personaldaten', width: 800, height: 460, items: [tabs], listeners: { beforedestroy: function(p){ if (forceClose === true) { forceClose = false; return true; } if (record) { formPanel.getForm().updateRecord(record); record_mod = !(compareRecords(record.getChanges(), loaded_record.data)); if (record_mod || isStoreDirty(ZuordnungenGrid.getStore()) || isStoreDirty(UebersichtGrid.getStore())) { Ext.Msg.show({ title: 'Personal', msg: 'Möchten Sie die Änderungen speichern?', buttons: Ext.Msg.YESNOCANCEL, fn: function(btn){ switch (btn) { case 'yes': Save(true); break; case 'no': //console.log('ignor me -- forceClose == true'); record.reject(); forceClose = true; win_edit.destroy(); break; default: //console.log('cancel'); } }, animEl: 'elId', icon: Ext.MessageBox.QUESTION }); return false; } record.reject(); } } }, buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (Save(true)) { win_edit.hide(); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }, { text: 'Übernehmen', iconCls: 'icon-defaults', handler: function(){ Save(false); } }] }); win_edit.show(); //-------- PUBLIC EVENTS.START ----------- // Locking tabItems for new Items.START if (selectedId == 1) { newId = true; UebersichtGrid.disable(); formPanel_Jahreswerte.disable(); ZuordnungenGrid.disable(); } // Locking tabItems for new Items.END loadOnFirstActivate = function(grid){ if (grid.getStore().getCount() == 0) { grid.getStore().load({ callback: function(){ selectedRowIndex = grid.getStore().indexOfId(String(nav_cookie_personal.get('current_year'))); grid.getSelectionModel().selectRow(selectedRowIndex); } }); } } UebersichtGrid.on('activate', loadOnFirstActivate); ZuordnungenGrid.on('activate', loadOnFirstActivate); UebersichtGrid.on('rowdblclick', function(UebersichtGrid, selId, e){ storeUebersichtGrid = UebersichtGrid.getStore(); var selectedYear = storeUebersichtGrid.data.items[selId].id; formPanel.getForm().findField('Jahr').setValue(selectedYear); if (gkz == 'P') { setJahreswerte(selId); } else { formPanel_Jahreswerte.setTitle("Mitglieder " + selectedYear); formPanel_Jahreswerte.findById('personal-free-' + random_personal_id).store.load({ params: { type: 'free', year: selectedYear, id: selectedId, start: 0, limit: oc.limit_records } }); formPanel_Jahreswerte.findById('personal-assigned-' + random_personal_id).store.load({ params: { year: selectedYear, id: selectedId } }); } tabs.setActiveTab(formPanel_Jahreswerte); }); var prepareStoreForLoad = function(store){ if (!formPanel) return; var von = Date.parseDate(formPanel.getForm().findField('Von').value, 'd.m.Y'); var bis = Date.parseDate(formPanel.getForm().findField('Bis').value, 'd.m.Y'); if (!von) { von_year = plan_von; } else { von_year = von.getFullYear(); } if (!bis) { bis_year = plan_bis; } else { bis_year = bis.getFullYear(); } store.baseParams = { von: von_year, bis: bis_year, id: formPanel.getForm().findField('PNR').getValue() }; } ZuordnungenGrid.getStore().on("beforeload", prepareStoreForLoad); UebersichtGrid.getStore().on("beforeload", prepareStoreForLoad); } function not_null_renderer(v){ if (v == 0) { return ''; } else { return v; } } function Personen(){ /* var action_delete = new Ext.ux.grid.RowAction({ iconCls: 'icon-minus', qtip: 'Person Löschen' }); */ var action_delete = new Ext.ux.grid.RowActions({ //header: 'Actions', keepSelection: true, actions: [{ iconCls: 'icon-minus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ deleteRecord(record.get('PNR'), record, storeUberPersonen); }, tooltip: 'Person Löschen' }] }); var summary = new Ext.ux.grid.GroupSummary(); var uberPersonencm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'PNR', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 70 }, { header: "Name", dataIndex: 'full_name', width: 150 }, { header: "Name", hidden: true, dataIndex: 'Name' }, { header: "Vorname", dataIndex: 'Vorname', hidden: true }, { header: "Einstellugsdatum", dataIndex: 'Von', renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Entlassungsdatum", renderer: Ext.util.Format.dateRenderer('d.m.Y'), dataIndex: 'Bis' }, { header: "Funktion", dataIndex: 'Funktion' }, { header: "Jahresbrutto", dataIndex: 'Jahresbruttolohn', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Nebenkosten", dataIndex: 'Lohnnebenkosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Sonstige", dataIndex: 'SonstigeKosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Fehltagen", dataIndex: 'Fehlzeiten', align: 'right' }, { header: "Stunden", dataIndex: 'Stunden', align: 'right', renderer: 'hour' }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "T", width: 20, //altText: 'Teams', menuDisabled: true, dataIndex: 'TeamsCount', renderer: not_null_renderer, align: 'right' }, { header: "D", width: 20, //altText: "Durchschnitte", menuDisabled: true, dataIndex: 'DurchschnitteCount', renderer: not_null_renderer, align: 'right' }, { header: "K", width: 50, //altText: "Kalkulationen", menuDisabled: true, dataIndex: 'KalkulationenCount', renderer: not_null_renderer }, action_delete]); // by default columns are sortable uberPersonencm.defaultSortable = true; // create the Data Store var storeUberPersonen = new Ext.xGroupingStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Name', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=personal&_LOAD_JAHRESWERTE_FOR_MAIN_USERSLIST', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: nav_cookie_personal.get("current_year"), profitcenter: nav_cookie_personal.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'PNR', type: 'int' }, { name: 'ProfitCenter' }, { name: 'full_name' }, { name: 'Name' }, { name: 'Nummer' }, { name: 'Vorname' }, { name: 'Funktion' }, { name: 'Jahresbruttolohn', type: 'float' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Lohnnebenkosten', type: 'float' }, { name: 'SonstigeKosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Fehlzeiten', type: 'int' }, { name: 'Stunden', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'TeamsCount', type: 'int' }, { name: 'DurchschnitteCount', type: 'int' }, { name: 'KalkulationenCount', type: 'int' }, { name: 'Bemerkung' }]) }); var UberPersonenGrid = new oc.Grid({ store: storeUberPersonen, cm: uberPersonencm, view: PersonenGroupView(), title: 'Personen', layout: 'fit', tbar: [{ text: 'Neu ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Personen'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(UberPersonenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(UberPersonenGrid, 'print'); } }], bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_personal, pageSize: oc.limit_records, store: storeUberPersonen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.id, 'Personen', record); } }, plugins: [new oc.Search({ disableIndexes: ['KalkulationenCount', 'DurchschnitteCount', 'TeamsCount', 'full_name', 'Jahresbruttolohn', 'Lohnnebenkosten', 'SonstigeKosten', 'Kosten', 'Fehlzeiten', 'Stunden', 'Stundensatz', 'ProfitCenter'], fieldsprefix: 'tbl_p_stamm.' }), action_delete, summary] }); return UberPersonenGrid; } function Teams(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ deleteRecord(record.get('PNR'), record, storeUberTeams); }, tooltip: 'Team Löschen' }] }); var summary = new Ext.ux.grid.GroupSummary(); var uberTeamscm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'PNR', header: "Nr", align: 'right', dataIndex: 'Nummer', width: 40 }, { header: "Name", dataIndex: 'Name' }, { header: "Von", dataIndex: 'Von', renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Funktion", dataIndex: 'Funktion' }, { header: "Jahresbrutto", dataIndex: 'Jahresbruttolohn', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Nebenkosten", dataIndex: 'Lohnnebenkosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Sonstige", dataIndex: 'SonstigeKosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Fehltage", dataIndex: 'Fehlzeiten', align: 'right' }, { header: "Stunden", dataIndex: 'Stunden', align: 'right', renderer: 'hour' }, { header: "Stundensatz", dataIndex: 'Stundensatz', align: 'right', renderer: 'deMoney', summaryType: 'sum' }, action_delete]); // by default columns are sortable uberTeamscm.defaultSortable = true; // create the Data Store var storeUberTeams = new Ext.xGroupingStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Name', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=personal&GKZ=G', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: nav_cookie_personal.get("current_year"), profitcenter: nav_cookie_personal.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR' }, [{ name: 'ProfitCenter' }, { name: 'PNR', type: 'int' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Jahresbruttolohn', type: 'float' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Lohnnebenkosten', type: 'float' }, { name: 'SonstigeKosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Fehlzeiten', type: 'int' }, { name: 'Stunden' }, { name: 'Stundensatz', type: 'float' }, { name: 'Bemerkung' }]) }); // create the editor grid var UberTeamsGrid = new oc.Grid({ store: storeUberTeams, cm: uberTeamscm, view: UebersichtGroupView(), title: 'Teams', tbar: [{ text: 'Neu ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Teams'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(UberTeamsGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(UberTeamsGrid, 'print'); } }], bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_personal, pageSize: oc.limit_records, store: storeUberTeams, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.id, 'Teams', record); } }, plugins: [new oc.Search({ disableIndexes: ['Jahresbruttolohn', 'Lohnnebenkosten', 'SonstigeKosten', 'Kosten', 'Fehlzeiten', 'Stunden', 'Stundensatz', 'ProfitCenter'], fieldsprefix: 'tbl_p_stamm.' }), action_delete, summary] }); return UberTeamsGrid; } function Durchschnitte(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ deleteRecord(record.get('PNR'), record, storeUberDurchschnitte); }, tooltip: 'Durchschnitt Löschen' }] }); var summary = new Ext.ux.grid.GroupSummary(); var uberDurchschnittecm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { header: "Nr", align: 'right', dataIndex: 'Nummer', width: 40 }, { header: "Name", dataIndex: 'Name' }, { header: "Von", dataIndex: 'Von', renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Funktion", dataIndex: 'Funktion' }, { header: "Jahresbrutto", dataIndex: 'Jahresbruttolohn', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Nebenkosten", dataIndex: 'Lohnnebenkosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Sonstige", dataIndex: 'SonstigeKosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Fehltagen", dataIndex: 'Fehlzeiten', align: 'right' }, { header: "Stunden", dataIndex: 'Stunden', renderer: 'hour', align: 'right' }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: 'sum' }, action_delete]); // by default columns are sortable uberDurchschnittecm.defaultSortable = true; // create the Data Store var storeUberDurchschnitte = new Ext.xGroupingStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Name', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=personal&GKZ=M', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: nav_cookie_personal.get("current_year"), profitcenter: nav_cookie_personal.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR' }, [{ name: 'ProfitCenter' }, { name: 'PNR', type: 'int' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Jahresbruttolohn', type: 'float' }, { name: 'Lohnnebenkosten', type: 'float' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'SonstigeKosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Fehlzeiten', type: 'int' }, { name: 'Stunden' }, { name: 'Stundensatz', type: 'float' }, { name: 'Bemerkung' }]) }); // create the editor grid var UberDurchschnitteGrid = new oc.Grid({ store: storeUberDurchschnitte, cm: uberDurchschnittecm, view: UebersichtGroupView(), title: 'Durchschnitte', deferredRender: false, tbar: [{ text: 'Neu ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Durchschnitte'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(UberDurchschnitteGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(UberDurchschnitteGrid, 'print'); } }], bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_personal, pageSize: oc.limit_records, store: storeUberDurchschnitte, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.id, 'Durchschnitte', record); } }, plugins: [new oc.Search({ disableIndexes: ['Jahresbruttolohn', 'Lohnnebenkosten', 'SonstigeKosten', 'Kosten', 'Fehlzeiten', 'Stunden', 'Stundensatz', 'ProfitCenter'], fieldsprefix: 'tbl_p_stamm.' }), action_delete, summary] }); return UberDurchschnitteGrid; } function Zuordnungen(){ var ZuordnungenGrid = new oc.zGrid({ ztype: 'personal' }); return ZuordnungenGrid; } var PersonenGrid = Personen(); var TeamsGrid = Teams(); var DurchschnitteGrid = Durchschnitte(); var ZuordnungenGrid = Zuordnungen(); PersonenGrid.on('render', function(){ reloadStore(PersonenGrid.store); }); TeamsGrid.on('render', function(){ reloadStore(TeamsGrid.store); }); DurchschnitteGrid.on('render', function(){ reloadStore(DurchschnitteGrid.store); }); ZuordnungenGrid.on('render', function(){ reloadStore(ZuordnungenGrid.store); }); function reloadStore(store, year, profitcenter){ if (!year) { year = nav_cookie_personal.get("current_year"); } if (!profitcenter) { profitcenter = nav_cookie_personal.get("current_profitcenter"); } store.load({ params: { start: 0, limit: oc.limit_records, year: year, profitcenter: profitcenter } }); } function reloadAllStores(year, profitcenter){ if (!year) { year = nav_cookie_personal.get("current_year"); } else { year = false; } if (!profitcenter) { profitcenter = nav_cookie_personal.get("current_profitcenter"); } else { profitcenter = false; } if (PersonenGrid.getEl()) { reloadStore(PersonenGrid.store, year, profitcenter); } if (TeamsGrid.getEl()) { reloadStore(TeamsGrid.store, year, profitcenter); } if (DurchschnitteGrid.getEl()) { reloadStore(DurchschnitteGrid.store, year, profitcenter); } if (ZuordnungenGrid.getEl()) { reloadStore(ZuordnungenGrid.store, year, profitcenter); } } var PersonalTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [PersonenGrid, TeamsGrid, DurchschnitteGrid, ZuordnungenGrid] }); var PersonalPanel = new Ext.Panel({ title: 'Personal', iconCls: 'icon-user-suit', id: 'Personal-panel', tbar: ['ProfitCenter : ', ' ', ProfitCenter_dropdown, ' ', 'Jahr : ', ' ', Year_dropdown], autoScroll: true, margins: '0 4 4 0', collapsible: false, border: false, layout: 'fit', items: PersonalTabs }); return { returnGrid: function(){ return PersonalPanel; } }; }; oc.AnlagenGridPanel = function(item){ nav_cookie_anlagen.set("current_year", plan_current); function AnlagenGroupView(){ return new Ext.grid.GroupingView({ forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Anlagen" : "Anlage"]})', hideGroupedColumn: true }); } function UebersichtGroupView(){ return new Ext.grid.GroupingView({ forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Anlagen" : "Anlage"]})', hideGroupedColumn: true }); } function updateAnlagenAllgemein(selectedId, value){ Ext.Ajax.request({ url: 'io.php', params: { Allgemein: value, id: selectedId, field: 'ANR', table: 'tbl_a_stamm' } }); } function deleteRecord(id, record, store){ //console.log('deleteRecord'); var assigments = (record.data.G_sum ? record.data.G_sum + ' Gruppe(n)
' : '') + (record.data.D_sum ? record.data.D_sum + ' Durchschnitt(e)
' : '') + (record.data.K_sum ? record.data.K_sum + ' Kalkulation(en)' : ''); if (assigments.length > 0) { assigments = 'Die nimmt teil an:
' + assigments; } function Result(btn){ //console.log(btn) if (btn == 'ok') { win = Ext.getCmp('Anlagen-' + id); if (win) { win.destroy(); } Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: id, target: 'anlagen' }, success: function(result, request){ //console.log('request'); var res = Ext.util.JSON.decode(result.responseText); if (res.success == false) { xErrorMessage({ title: 'Server Error! (deleteVersion)', text: res.errorInfo || result.responseText }); } else { store.reload(); } } }); } } Ext.MessageBox.show({ title: 'Bästätigung', msg: 'Sind Sie sicher, dass Sie ' + record.data.Name + ' löschen möchten? ' + assigments, width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: Result }); } function Leasing(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.data.ANR, record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var storeLeasing = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Profitcenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&type=Leasing', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Allgemein' }, { name: 'LeasingDauer', type: 'int' }, { name: 'LeasingErsteRate', type: 'float' }, { name: 'LeasingRate', type: 'float' }, { name: 'Leasing', type: 'float' }, { name: 'D_sum', type: 'int' }, { name: 'G_sum', type: 'int' }, { name: 'K_sum', type: 'int' }]) }); var allgemein = new Ext.grid.CheckColumn({ id: 'Allgemein', header: 'Allgemein', dataIndex: 'Allgemein', width: 55 }); var Leasingcm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, allgemein, { header: "Dauer", dataIndex: 'LeasingDauer', width: 80, align: 'right' }, { header: "Erste Rate", dataIndex: 'LeasingErsteRate', width: 80, renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Rate", dataIndex: 'LeasingRate', width: 80, renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "Leasing", dataIndex: 'Leasing', width: 80, renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "K", dataIndex: 'K_sum', renderer: not_null_renderer, width: 20 }, { header: "G", dataIndex: 'G_sum', renderer: not_null_renderer, width: 20 }, { header: "D", dataIndex: 'D_sum', renderer: not_null_renderer, width: 20 }, action_delete]); // by default columns are sortable Leasingcm.defaultSortable = true; var LeasingGrid = new oc.Grid({ view: AnlagenGroupView(), title: 'Leasing', store: storeLeasing, cm: Leasingcm, tbar: [{ text: 'Neue leasing Anlage ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Leasing'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(LeasingGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(LeasingGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), 'Leasing', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeLeasing, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['LeasingDauer', 'LeasingErsteRate', 'Leasing', 'Von', 'Bis', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete, allgemein, new Ext.ux.grid.GroupSummary()] }); // Public Events . START allgemein.on("click", function(a, e, record){ updateAnlagenAllgemein(record.data.ANR, record.data.Allgemein); record.commit(); }); // Public Events . END return LeasingGrid; } function Durchschnitte(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.get('ANR'), record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var storeDurchschnitte = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&gkz=M', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }]) }); var Durchschnittecm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, action_delete]); // by default columns are sortable Durchschnittecm.defaultSortable = true; var DurchschnitteGrid = new oc.Grid({ view: AnlagenGroupView(), title: 'Durchschnitte', store: storeDurchschnitte, cm: Durchschnittecm, tbar: [{ text: 'Neues Durchschnitt ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Durchschnitte'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(DurchschnitteGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(DurchschnitteGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), 'Durchschnitte', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeDurchschnitte, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete] }); // Public Events . START // Public Events . END return DurchschnitteGrid; } function Miete(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.get('ANR'), record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var storeMiete = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&type=Miete', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_year") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ANR', type: 'int' }, { name: 'ProfitCenter' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Allgemein', type: 'int' }, { name: 'Miete', type: 'float' }, { name: 'Miete', type: 'float' }, { name: 'MieteRate', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'D_sum', type: 'int' }, { name: 'G_sum', type: 'int' }, { name: 'K_sum', type: 'int' }]) }); var allgemein = new Ext.grid.CheckColumn({ id: 'Allgemein', header: 'Allgemein', dataIndex: 'Allgemein', width: 55 }); var Mietecm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, allgemein, { header: "Rate", dataIndex: 'MieteRate', renderer: 'deMoney', width: 80, align: 'right', summaryType: 'sum' }, { header: "Miete", dataIndex: 'Miete', renderer: 'deMoney', align: 'right', width: 80, summaryType: 'sum' }, { header: "K", dataIndex: 'K_sum', renderer: not_null_renderer, width: 20 }, { header: "G", dataIndex: 'G_sum', renderer: not_null_renderer, width: 20 }, { header: "D", dataIndex: 'D_sum', renderer: not_null_renderer, width: 20 }, action_delete]); // by default columns are sortable Mietecm.defaultSortable = true; var MieteGrid = new oc.Grid({ view: AnlagenGroupView(), title: 'Miete', store: storeMiete, cm: Mietecm, tbar: [{ text: 'Neu', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Miete'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(MieteGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(MieteGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), 'Miete', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeMiete, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['MieteRate', 'Miete', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete, allgemein,new Ext.ux.grid.GroupSummary()] }); // Public Events . START allgemein.on("click", function(a, e, record){ updateAnlagenAllgemein(record.data.ANR, record.data.Allgemein); record.commit(); }); // Public Events . END return MieteGrid; } function UebersichtAnlagen(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.get('ANR'), record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var summary = new Ext.ux.grid.GroupSummary(); var storeUebersichtAnlagen = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Typ' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Allgemein' }, { name: 'AfANeuwert' }, { name: 'AfADauer' }, { name: 'AfA', type: 'float' }, { name: 'AfAKalk', type: 'float' }, { name: 'AfADauer', type: 'float' }, { name: 'AfARestwert', type: 'float' }, { name: 'Leasing', type: 'float' }, { name: 'Miete', type: 'float' }, { name: 'Betriebskosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'Nutzungsgrad', type: "float" }, { name: 'Nutzungsstunden' }]) }); var UebersichtAnlagencm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "AfA Restwert", dataIndex: 'AfARestwert', width: 80, renderer: 'deMoney', summaryType: 'sum', align: 'right' }, { header: "AfA ", dataIndex: 'AfA', renderer: 'deMoney_no_nulls', summaryType: 'sum', width: 80, align: 'right' }, { header: "AfA Kalk", renderer: 'deMoney_no_nulls', summaryType: 'sum', dataIndex: 'AfAKalk', width: 80, align: 'right' }, { header: "Leasing", dataIndex: 'Leasing', renderer: 'deMoney_no_nulls', summaryType: 'sum', width: 80, align: 'right' }, { header: "Miete", dataIndex: 'Miete', renderer: 'deMoney_no_nulls', summaryType: 'sum', align: 'right', width: 80 }, { header: "Betriebskosten", dataIndex: 'Betriebskosten', summaryType: 'sum', renderer: 'deMoney_no_nulls', align: 'right', width: 80 }, { header: "Kosten", dataIndex: 'Kosten', summaryType: 'sum', renderer: 'deMoney', align: 'right', width: 80 }, { header: "Stundensatz", dataIndex: 'Stundensatz', summaryType: 'sum', renderer: 'deMoney', align: 'right', width: 80 }, { header: "Nutzungsgrad", dataIndex: 'Nutzungsgrad', renderer: 'realpercents', align: 'right', background: 'yellow', width: 80 }, { header: "Nutzungsstunden", dataIndex: 'Nutzungsstunden', align: 'right', renderer: 'hour', width: 80 }, action_delete]); // by default columns are sortable UebersichtAnlagencm.defaultSortable = true; var UebersichtAnlagenGrid = new oc.Grid({ view: UebersichtGroupView(), title: 'Übersicht Anlagen', store: storeUebersichtAnlagen, cm: UebersichtAnlagencm, tbar: ['->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(UebersichtAnlagenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(UebersichtAnlagenGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), record.get('Typ'), record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeUebersichtAnlagen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['Nutzungsstunden', 'Nutzungsgrad', 'Stundensatz', 'Betriebskosten', 'Leasing', 'AfAKalk', 'AfA', 'AfARestwert', 'MieteRate', 'Miete', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'Von', 'Bis', 'Kosten', 'ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete, summary] }); return UebersichtAnlagenGrid; } function UebersichtGruppen(type){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.get('ANR'), record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var summary = new Ext.ux.grid.GroupSummary(); if (!type) { type = 'G'; } var storeUebersichtGruppen = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&gkz=' + type, method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Allgemein' }, { name: 'AfANeuwert', type: 'float' }, { name: 'AfADauer' }, { name: 'AfA', type: 'float' }, { name: 'AfAKalk', type: 'float' }, { name: 'AfADauer' }, { name: 'AfARestwert' }, { name: 'Leasing', type: 'float' }, { name: 'Miete', type: 'float' }, { name: 'Betriebskosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'Nutzungsgrad', type: 'float' }, { name: 'Nutzungsstunden' }]) }); var UebersichtGruppencm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "AfA Restwert", dataIndex: 'AfARestwert', width: 80, renderer: 'deMoney', summaryType: 'sum', align: 'right' }, { header: "AfA ", dataIndex: 'AfA', renderer: 'deMoney_no_nulls', summaryType: 'sum', width: 80, align: 'right' }, { header: "AfA Kalk", renderer: 'deMoney_no_nulls', summaryType: 'sum', dataIndex: 'AfAKalk', width: 80, align: 'right' }, { header: "Leasing", dataIndex: 'Leasing', renderer: 'deMoney_no_nulls', summaryType: 'sum', width: 80, align: 'right' }, { header: "Miete", dataIndex: 'Miete', renderer: 'deMoney_no_nulls', summaryType: 'sum', align: 'right', width: 80 }, { header: "Betriebskosten", dataIndex: 'Betriebskosten', renderer: 'deMoney_no_nulls', summaryType: 'sum', align: 'right', width: 80 }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', summaryType: 'sum', align: 'right', width: 80 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', summaryType: 'sum', align: 'right', width: 80 }, { header: "Nutzungsgrad", dataIndex: 'Nutzungsgrad', renderer: 'realpercents', align: 'right', background: 'yellow', width: 80 }, { header: "Nutzungsstunden", dataIndex: 'Nutzungsstunden', align: 'right', renderer: 'hour', width: 80 }, action_delete]); // by default columns are sortable UebersichtGruppencm.defaultSortable = true; var UebersichtGruppenGrid = new oc.Grid({ view: UebersichtGroupView(), title: 'Übersicht Gruppen', store: storeUebersichtGruppen, cm: UebersichtGruppencm, tbar: ['->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(UebersichtGruppenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(UebersichtGruppenGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), 'Gruppe', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeUebersichtGruppen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['Nutzungsstunden', 'Nutzungsgrad', 'Stundensatz', 'Betriebskosten', 'Leasing', 'AfAKalk', 'AfA', 'AfARestwert', 'MieteRate', 'Miete', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'Von', 'Bis', 'Kosten', 'ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete, summary] }); return UebersichtGruppenGrid; } function EditWindow(selectedId, type, record){ win = Ext.getCmp('Anlagen-' + selectedId); if (win) { win.show(); win.expand(); return false; } var random_anlagen_id = Math.random(); function storeUebersicht(id){ var store = new Ext.data.Store({ listeners: { // cheking store for wrong stuff load: function(store){ var l = this.getCount(); for (i = 0; i < l; i++) { record = this.getAt(i); if (Number(record.get('Nutzungsgrad')) == 0) { record.set('Nutzungsgrad', 100); } if (Number(record.get('Nutzungsstunden')) == 0) { record.set('Nutzungsstunden', 1); } } } }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen_uebersicht' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Jahr', totalProperty: 'total' }, [{ name: 'ANR' }, { name: 'Jahr' }, { name: 'AfARestwert', type: 'float' }, { name: 'AfA', type: 'float' }, { name: 'AfAKalk', type: 'float' }, { name: 'Betriebskosten', type: 'float' }, { name: 'Kosten', type: 'float' }, { name: 'Nutzungsgrad', type: 'float' }, { name: 'Nutzungsstunden', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'Leasing', type: 'float' }, { name: 'Miete', type: 'float' }, { name: 'SK1', type: 'float' }, { name: 'SK2', type: 'float' }, { name: 'SK3', type: 'float' }, { name: 'SK4', type: 'float' }, { name: 'SK5', type: 'float' }, { name: 'SK6', type: 'float' }, { name: 'SK7', type: 'float' }, { name: 'SK8', type: 'float' }, { name: 'SK9', type: 'float' }, { name: 'SK10', type: 'float' }]) }); return store; } function setJahreswerte(selId){ var row = UebersichtGrid.store.data.items[selId].data; formPanel_Jahreswerte.setTitle("Jahreswerte " + row.Jahr); // Filling up the Jahreswerte form with data from the Uebersicht's store formPanel_Jahreswerte.getForm().findField('Jahr').setValue(row.Jahr); formPanel_Jahreswerte.getForm().findField('SK1').setValue(row.SK1); formPanel_Jahreswerte.getForm().findField('SK2').setValue(row.SK2); formPanel_Jahreswerte.getForm().findField('SK3').setValue(row.SK3); formPanel_Jahreswerte.getForm().findField('Betriebskosten').setValue(row.Betriebskosten); formPanel_Jahreswerte.getForm().findField('Kosten').setValue(row.Kosten); formPanel_Jahreswerte.getForm().findField('Stundensatz').setValue(roundMoney(row.Stundensatz)); formPanel_Jahreswerte.getForm().findField('Nutzungsgrad').setValue(row.Nutzungsgrad); formPanel_Jahreswerte.getForm().findField('Nutzungsstunden').setValue(parseFloat(row.Nutzungsstunden)); if (type == 'AfA') { formPanel_Jahreswerte.getForm().findField('AfA').setValue(row.AfA); formPanel_Jahreswerte.getForm().findField('AfAKalk').setValue(row.AfAKalk); } } /** * Calculate the new values * * @param {Object} e The actual text- or numberfield */ function calculate(apply_to_all_future_years){ //console.log('calculate!'); function AfA(Dauer, Year){ var afa_rules_change_date = Date.parseDate('01.06.2004', 'd.m.Y'); var begin_afa_date; var correction = 0; var period; if ((!Dauer) || Number(Dauer) == 0) { Dauer = AfADauer; } if (!Year) { Year = Jahr; } if (von_date < afa_rules_change_date) { //correction = 0; if (Number(von_date.getMonth()) <= 4) { begin_afa_date = Date.parseDate('01.01.' + von_date.getFullYear(), "d.m.Y"); //correct_period = 1; } else { begin_afa_date = Date.parseDate('01.06.' + von_date.getFullYear(), "d.m.Y"); correction = 1; } } else { begin_afa_date = von_date; } var end_afa_date = begin_afa_date.add(Date.MONTH, +Dauer); if (Number(Year) > Number(end_afa_date.getFullYear())) { AfA_wert = 1; } else { if (begin_afa_date.getFullYear() == Year) { period = 12 - Number(begin_afa_date.getMonth() + correction); } else if (end_afa_date.getFullYear() == Year) { period = Number(end_afa_date.getMonth()) + correction; } else { period = 12; } if (begin_afa_date.getFullYear() == end_afa_date.getFullYear()) { period = Number(end_afa_date.getMonth()); } AfA_wert = parseFloat(AfANeuwert) / parseFloat(Dauer) * period; } if ((!AfA_wert) || (AfA_wert === 0)) { AfA_wert = 1; } return AfA_wert; } function Leasing(Dauer, Year){ ErsteRate = 0; if (!Year) { Year = Jahr; } if (!Dauer) { Dauer = LeasingDauer; } var end_leasing_date = von_date.add(Date.MONTH, +Dauer); if (Number(Year) > Number(end_leasing_date.getFullYear())) { Rate = 0; } else { if (von_date.getFullYear() == Year) { period = 11 - Number(von_date.getMonth()); ErsteRate = LeasingErsteRate; } else if (end_leasing_date.getFullYear() == Year) { period = Number(end_leasing_date.getMonth()); } else { period = 12; } if (von_date.getFullYear() == end_leasing_date.getFullYear()) { period = Number(end_leasing_date.getMonth()); } Rate = (parseFloat(LeasingRate) * period) + Number(ErsteRate); } return Rate; } function Miete(Year){ if (!Year) { Year = Jahr; } if (bis_date) { end_miete_date = bis_date; } else { end_miete_date = Date.parseDate('01.01.2999', 'd.m.Y'); } if (Number(Year) > Number(end_miete_date.getFullYear())) { Rate = 0; } else { if (von_date.getFullYear() == Year) { period = 12 - Number(von_date.getMonth()); } else if (end_miete_date.getFullYear() == Year) { period = Number(end_miete_date.getMonth() + 1); } else { period = 12; } if (von_date.getFullYear() == end_miete_date.getFullYear()) { period = Number(end_miete_date.getMonth()); } Rate = (parseFloat(MieteRate) * period); } return Rate; } // data from Stamm var Von = formPanel.getForm().findField('Von').value; var Bis = formPanel.getForm().findField('Bis').value; var von_date = Date.parseDate(Von, 'd.m.Y'); var bis_date = Date.parseDate(Bis, 'd.m.Y'); if (type == 'AfA') { var AfADauer = formPanel.getForm().findField('AfADauer').getValue(); var AfAKalkDauer = formPanel.getForm().findField('AfAKalkDauer').getValue(); var AfANeuwert = formPanel.getForm().findField('AfANeuwert').getValue(); // Calculating AfA.END AfA_wert = AfA(AfADauer, String(Jahr)); // Calculating AfAKalk.START AfAKalk_wert = AfA(AfAKalkDauer, String(Jahr)); // Calculating AfAKalk.END } else { AfA_wert = 0; AfAKalk_wert = 0; } if (type == 'Leasing') { var LeasingRate = formPanel.getForm().findField('LeasingRate').getValue(); var LeasingErsteRate = formPanel.getForm().findField('LeasingErsteRate').getValue(); var LeasingDauer = formPanel.getForm().findField('LeasingDauer').getValue(); } if (type == 'Miete') { var MieteRate = formPanel.getForm().findField('MieteRate').getValue(); } // data from Jahreswerte var AfAKalk = formPanel_Jahreswerte.getForm().findField('AfAKalk').getValue(); var Jahr = formPanel_Jahreswerte.getForm().findField('Jahr').getValue(); //var Kosten = formPanel_Jahreswerte.getForm().findField('Kosten').getValue(); var Nutzungsgrad = formPanel_Jahreswerte.getForm().findField('Nutzungsgrad').getValue(); var Nutzungsstunden = formPanel_Jahreswerte.getForm().findField('Nutzungsstunden').getValue(); var Betriebskosten = formPanel_Jahreswerte.getForm().findField('Betriebskosten').getValue(); var SK1 = formPanel_Jahreswerte.getForm().findField('SK1').getValue(); if (!SK1) { SK1 = 0; } var SK2 = formPanel_Jahreswerte.getForm().findField('SK2').getValue(); if (!SK2) { SK2 = 0; } var SK3 = formPanel_Jahreswerte.getForm().findField('SK3').getValue(); if (!SK3) { SK3 = 0; } Betriebskosten = parseFloat(SK1) + parseFloat(SK2) + parseFloat(SK3); var DefaultNutzungsgrad = Number(Parameter('DefaultNutzungsgrad')); var DefaultNutzungsstunden = Number(Parameter('DefaultNutzungsstunden')); if (type == 'AfA') { if (parseFloat(Nutzungsgrad) > 0 && parseFloat(Nutzungsstunden) > 0) { Kosten = parseFloat(AfAKalk) + parseFloat(Betriebskosten); Stundensatz = parseFloat(Kosten) / (parseFloat(Nutzungsgrad) / 100 * parseFloat(Nutzungsstunden)); } else { Stundensatz = 0; Kosten = AfAKalk_wert; } formPanel_Jahreswerte.getForm().findField('AfA').setValue(Math.round(AfA(AfADauer) * 100) / 100); formPanel_Jahreswerte.getForm().findField('AfAKalk').setValue(Math.round(AfA(AfAKalkDauer) * 100) / 100); } else { formPanel_Jahreswerte.getForm().findField('AfA').setValue(0); formPanel_Jahreswerte.getForm().findField('AfAKalk').setValue(0); } if (type == 'Leasing') { Kosten = parseFloat(Leasing()) + parseFloat(Betriebskosten); } if (type == 'Miete') { Kosten = parseFloat(Miete()) + parseFloat(Betriebskosten); } var Stundensatz = parseFloat(Kosten) / (parseFloat(Nutzungsgrad) / 100 * parseFloat(Nutzungsstunden)); formPanel_Jahreswerte.getForm().findField('Betriebskosten').setValue(Math.round(Betriebskosten * 100) / 100); formPanel_Jahreswerte.getForm().findField('Kosten').setValue(Math.round(Kosten * 100) / 100); formPanel_Jahreswerte.getForm().findField('Stundensatz').setValue(Math.round(Stundensatz * 100) / 100); // updating values in the current Uebersicht grid for the edited year current_row = UebersichtGrid.store.indexOfId(String(Jahr)); if (current_row !== -1) { UebersichtGrid.store.data.items[current_row].data.SK1 = SK1; UebersichtGrid.store.data.items[current_row].data.SK2 = SK2; UebersichtGrid.store.data.items[current_row].data.SK3 = SK3; UebersichtGrid.store.data.items[current_row].data.Betriebskosten = Betriebskosten; UebersichtGrid.store.data.items[current_row].data.Kosten = Kosten; UebersichtGrid.store.data.items[current_row].data.Stundensatz = Stundensatz; UebersichtGrid.store.data.items[current_row].data.Nutzungsgrad = Nutzungsgrad; UebersichtGrid.store.data.items[current_row].data.Nutzungsstunden = Nutzungsstunden; if (apply_to_all_future_years) { currentRecord = UebersichtGrid.getStore().getById(String(Jahr)); UebersichtGrid.getStore().each(function(loopRecord){ if (Number(loopRecord.get('Jahr')) > Number(currentRecord.id)) { //console.info(loopRecord.id); loopRecord.set('ANR', formPanel.getForm().findField('ANR').getValue()); loopRecord.set('SK1', SK1); loopRecord.set('SK2', SK2); loopRecord.set('SK3', SK3); loopRecord.set('Betriebskosten', Betriebskosten); loopRecord.set('Kosten', Kosten); //loopRecord.set('Stundensatz', Stundensatz); loopRecord.set('Nutzungsgrad', Nutzungsgrad); loopRecord.set('Nutzungsstunden', Nutzungsstunden); } }); } } // generating current Uebersicht grid var AfARestwert_grid = AfANeuwert; var l = UebersichtGrid.store.getCount(); for (i = 0; i < l; i++) { row = UebersichtGrid.store.data.items[i]; row.data.SK1 = Number(row.data.SK1).toFixed(2); row.data.SK2 = Number(row.data.SK2).toFixed(2); row.data.SK3 = Number(row.data.SK3).toFixed(2); row.data.Betriebskosten = parseFloat(row.data.SK1) + parseFloat(row.data.SK2) + parseFloat(row.data.SK3); // Setting up default values for the new records.START if (row.data.ANR == 1) { row.data.Nutzungsgrad = DefaultNutzungsgrad; row.data.Nutzungsstunden = DefaultNutzungsstunden; } // Setting up default values for the new records.END switch (type) { case 'AfA': AfA_grid = Number(AfA(AfADauer, Number(row.data.Jahr))).toFixed(2); AfAKalk_grid = Number(AfA(AfAKalkDauer, Number(row.data.Jahr))).toFixed(2); AfARestwert_grid -= AfA_grid; if (AfARestwert_grid < 1) { AfARestwert_grid = 1; } //piopzdfhdfhzdfhzdfhzdhfhz'';;';lll''\ row.data.AfA = Number(AfA_grid).toFixed(2); row.data.AfAKalk = Number(AfAKalk_grid).toFixed(2); row.data.AfARestwert = Number(AfARestwert_grid).toFixed(2); row.data.Kosten = parseFloat(row.data.Betriebskosten) + parseFloat(AfAKalk_grid); break; case 'Leasing': LeasingRate_grid = Leasing(LeasingDauer, Number(row.data.Jahr)); row.data.Leasing = Number(LeasingRate_grid).toFixed(2); row.data.Kosten = parseFloat(row.data.Betriebskosten) + parseFloat(LeasingRate_grid); break; case 'Miete': MieteRate_grid = Miete(Number(row.data.Jahr)); row.data.Miete = Number(MieteRate_grid).toFixed(2); row.data.Kosten = parseFloat(row.data.Betriebskosten) + parseFloat(MieteRate_grid); break; } row.data.Stundensatz = parseFloat(row.data.Kosten) / (parseFloat(row.data.Nutzungsgrad) / 100 * parseFloat(row.data.Nutzungsstunden)); } UebersichtGrid.reconfigure(UebersichtGrid.store, UebersichtGrid.getColumnModel()); } function UebersichtAfA(id){ var store = storeUebersicht(id); //store.load(); var Uebersichtcm = new Ext.grid.ColumnModel([{ id: 'Jahr', header: "Jahr", dataIndex: 'Jahr', width: 50 }, { id: 'AfARestwert', header: "Restwert", dataIndex: 'AfARestwert', align: 'right', renderer: 'deMoney' }, { id: 'AfA', header: "AfA", dataIndex: 'AfA', renderer: "deMoney", align: 'right' //tooltip: 'tip(15)?>' }, { id: 'AfAKalk', header: "AfA Kalk.", dataIndex: 'AfAKalk', align: 'right', renderer: "deMoney" }, { id: 'SK1', header: "SK1", dataIndex: 'SK1', align: 'right', renderer: "deMoney", hidden: true }, { id: 'SK2', header: "SK2", dataIndex: 'SK2', align: 'right', renderer: "deMoney", hidden: true }, { id: 'SK3', header: "SK3", dataIndex: 'SK3', align: 'right', renderer: "deMoney", hidden: true }, { id: 'Betriebskosten', header: "Betriebskosten", dataIndex: 'Betriebskosten', align: 'right', renderer: "deMoney" }, { id: 'Kosten', header: "Kosten", dataIndex: 'Kosten', align: 'right', renderer: "deMoney" }, { id: 'Nutzungsgrad', header: "Nutzungsgrad", dataIndex: 'Nutzungsgrad', align: 'right', renderer: "realpercents" }, { id: 'Nutzungsstunden', header: "Nutzungsstunden", dataIndex: 'Nutzungsstunden' }, { id: 'Stundensatz', header: "Stundensatz", dataIndex: 'Stundensatz', align: 'right', renderer: "deMoney" }]); // create the editor grid var UebersichtGrid = new oc.Grid({ title: 'Übersicht', viewConfig: { forceFit: true }, loadMask: false, store: store, cm: Uebersichtcm }); Uebersichtcm.defaultSortable = true; return UebersichtGrid; } function UebersichtLeasing(id){ var store = storeUebersicht(id); var Uebersichtcm = new Ext.grid.ColumnModel([{ id: 'Jahr', header: "Jahr", dataIndex: 'Jahr', width: 50 }, { id: 'Leasing', header: "Leasing", dataIndex: 'Leasing', align: 'right', renderer: "deMoney" }, { id: 'Betriebskosten', header: "Betriebskosten", dataIndex: 'Betriebskosten', align: 'right', renderer: "deMoney" }, { id: 'Kosten', header: "Kosten", dataIndex: 'Kosten', align: 'right', renderer: "deMoney" }, { id: 'Nutzungsgrad', header: "Nutzungsgrad", dataIndex: 'Nutzungsgrad', align: 'right', renderer: "realpercents" }, { id: 'Nutzungsstunden', header: "Nutzungsstunden", dataIndex: 'Nutzungsstunden', align: 'right'//, //renderer: "realpercents" }, { id: 'Stundensatz', header: "Stundensatz", dataIndex: 'Stundensatz', align: 'right', renderer: "deMoney" }]); // create the editor grid var UebersichtGrid = new oc.Grid({ title: 'Übersicht', store: store, loadMask: false, cm: Uebersichtcm }); Uebersichtcm.defaultSortable = true; return UebersichtGrid; } function UebersichtMiete(id){ var store = storeUebersicht(id); var Uebersichtcm = new Ext.grid.ColumnModel([{ id: 'Jahr', header: "Jahr", dataIndex: 'Jahr', width: 50 }, { id: 'MieteRate', header: "Miete", dataIndex: 'Miete', align: 'right', renderer: "deMoney" }, { id: 'Betriebskosten', header: "Betriebskosten", dataIndex: 'Betriebskosten', align: 'right', renderer: "deMoney" }, { id: 'Kosten', header: "Kosten", dataIndex: 'Kosten', align: 'right', renderer: "deMoney" }, { id: 'Nutzungsgrad', header: "Nutzungsgrad", dataIndex: 'Nutzungsgrad', align: 'right', renderer: "realpercents" }, { id: 'Stundensatz', header: "Stundensatz", dataIndex: 'Stundensatz', align: 'right', renderer: "deMoney" }]); // create the editor grid var UebersichtGrid = new oc.Grid({ title: 'Übersicht', viewConfig: { forceFit: true }, store: store, loadMask: false, cm: Uebersichtcm }); Uebersichtcm.defaultSortable = true; return UebersichtGrid; } function UebersichtGruppe(id){ var store = storeUebersicht(id); //store.load(); var Uebersichtcm = new Ext.grid.ColumnModel([{ id: 'Jahr', header: "Jahr", dataIndex: 'Jahr', width: 50 }, { id: 'AfA', header: "AfA", dataIndex: 'AfA', renderer: "deMoney", align: 'right' //tooltip: 'tip(15)?>' }, { id: 'AfAKalk', header: "AfA Kalk.", dataIndex: 'AfAKalk', align: 'right', renderer: "deMoney_no_nulls" }, { id: 'Leasing', header: "Leasing", dataIndex: 'Leasing', align: 'right', renderer: "deMoney_no_nulls" }, { id: 'MieteRate', header: "Miete", dataIndex: 'Miete', align: 'right', renderer: "deMoney_no_nulls" }, { id: 'Betriebskosten', header: "Betriebskosten", align: 'right', dataIndex: 'Betriebskosten', renderer: "deMoney" }, { id: 'Kosten', header: "Kosten", dataIndex: 'Kosten', align: 'right', renderer: "deMoney" }, { id: 'Stundensatz', header: "Stundensatz", dataIndex: 'Stundensatz', align: 'right', renderer: "deMoney" }]); // create the editor grid var UebersichtGrid = new oc.Grid({ title: 'Übersicht', store: store, loadMask: false, cm: Uebersichtcm }); Uebersichtcm.defaultSortable = true; return UebersichtGrid; } function Gruppe(gkz, selectedId, year){ /* if (selectedId == 1) { selectedId = formPanel.getForm().findField('ANR').getValue(); } */ var sum_type; switch (gkz) { case 'G': sum_type = 'sum'; break; case 'M': sum_type = 'average'; break; } function GroupGridView(){ var View = new Ext.grid.GroupingView({ showGroupName: false, forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); return View; } var action_add = new Ext.ux.grid.RowActions({ //qtipIndex: 'qtip1', keepSelection: true, actions: [{ iconCls: 'icon-plus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ if (selectedId == 1) { selectedId = formPanel.getForm().findField('ANR').getValue(); } Ext.Ajax.request({ url: 'api.php', params: { id: selectedId, a: 'assing_a_anlagen', ANR: selectedId, GKZ: gkz, MANR: record.data.ANR, MGKZ: record.data.GKZ, table: 'rel_a_gruppen', field: 'ANR,MANR' }, method: 'POST', success: function(result, request){ FreeMembersGrid.getView().holdPosition = true; FreeMembersGrid.getStore().reload(); TeamMemberGrid.getView().holdPosition = true; TeamMemberGrid.getStore().reload(); UebersichtGrid.getStore().reload(); } }); }, tooltip: 'Anlage einfügen' }] }); var action_remove = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ qtipIndex: 'qtip21212', iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ Ext.Ajax.request({ url: 'api.php', params: { a: 'remove_a_anlagen', anlage_id: record.data.ANR, id: selectedId, type: type, GKZ: gkz }, method: 'POST', success: function(result, request){ FreeMembersGrid.getView().holdPosition = true; FreeMembersGrid.getStore().reload(); TeamMemberGrid.getView().holdPosition = true; TeamMemberGrid.getStore().reload(); UebersichtGrid.getStore().reload(); } }); }, tooltip: 'Anlage von der Gruppe entfernen' }] }); var TeamMembercm = new Ext.grid.ColumnModel([{ id: 'ANR', header: "Nr", dataIndex: 'ANR', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion' }, { header: "Typ", dataIndex: 'Typ', hidden: true }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: sum_type, width: 70 }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', summaryType: sum_type, align: 'right', width: 70 }, { header: "Anteil", dataIndex: 'Anteil', align: 'right', width: 70, renderer: "realpercents", editor: new Ext.form.NumberField({ allowBlank: false, maxValue: 100, minValue: 0 }) }, action_remove]); // by default columns are sortable TeamMembercm.defaultSortable = true; var storeTeamMember = new oc.gStore({ groupField: 'Typ', sortInfo: { field: 'Typ', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=gruppen', method: 'POST', baseParams: { id: selectedId, year: year } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'Typ' }, { name: 'ANR' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }, { name: 'Anteil', type: 'float' }, { name: 'Kosten', type: 'float' }]) }); var FreeMemberscm = new Ext.grid.ColumnModel([{ id: 'ANR', header: "Nr", dataIndex: 'ANR', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', disabled: true }, { header: "Typ", dataIndex: 'Typ', align: 'right', hidden: true }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', width: 70 }, action_add]); // by default columns are sortable FreeMemberscm.defaultSortable = true; var storeFreeMembers = new oc.gStore({ groupField: 'Typ', sortInfo: { field: 'Typ', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=gruppen&type=free&id=' + selectedId + '&gkz=' + gkz, method: 'POST', baseParams: { year: year, start: 0, limit: oc.limit_records } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'Typ' }, { name: 'GKZ' }, { name: 'ANR' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }]) }); var summary = new Ext.ux.grid.GroupSummary(); var TeamMemberGrid = new Ext.grid.EditorGridPanel({ id: 'anlagen-assigned-' + random_anlagen_id, clicksToEdit: 1, title: 'Mitglieder dieser Gruppe', store: storeTeamMember, cm: TeamMembercm, view: GroupGridView(), plugins: [summary, action_remove], stripeRows: true, loadMask: true, autoScroll: true, border: false }); var FreeMembersGrid = new oc.Grid({ id: 'anlagen-free-' + random_anlagen_id, title: 'Anlagen', store: storeFreeMembers, cm: FreeMemberscm, view: GroupGridView(), header: true, tbar: [], bbar: [new Ext.AdvancedPagingToolbar({ nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeFreeMembers, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden", width: 415 }), ' '], plugins: [new oc.Search({ width: 200, disableIndexes: ['Jahresbruttolohn', 'Lohnnebenkosten', 'SonstigeKosten', 'Kosten', 'Fehlzeiten', 'Stunden', 'Stundensatz'], fieldsprefix: 'tbl_a_stamm.', width: 200 }), action_add] }); // Assign members to Team var teamId = selectedId; var panelFree = new Ext.Panel({ layout: 'fit', region: 'center', border: false, items: FreeMembersGrid }); var panelAssigned = new Ext.Panel({ region: 'north', layout: 'fit', split: true, border: false, height: 190, items: TeamMemberGrid }); var panel_anlagen = new Ext.Panel({ id: 'formpanel_anlagen', title: 'Mitglieder ' + year, border: false, deferredRender: false, height: 600, plain: true, layout: 'border', items: [panelAssigned, panelFree] }); // Public events . START FreeMembersGrid.on('render', function(){ storeFreeMembers.load({ params: { type: 'free', year: year, id: selectedId, start: 0, limit: oc.limit_records } }); }); TeamMemberGrid.on('render', function(){ storeTeamMember.load({ params: { year: year, id: selectedId } }); }); // Anteil on change - save . START storeTeamMember.on("update", function(storeTeamMember, record, action){ Ext.Ajax.request({ url: 'io.php', params: { table: 'rel_a_gruppen', Anteil: record.data.Anteil, field: 'ANR,MANR', id: selectedId + ',' + record.data.ANR }, method: 'POST', success: function(result, request){ storeFreeMembers.reload(); storeTeamMember.reload(); } }); }); // Anteil on change - save . END // Public events . END return panel_anlagen; } // Common form fields.START function formfield_Nr(){ var Nr = new Ext.form.TextField({ fieldLabel: 'Nr', name: 'ANR', hidden: true, hideLabel: true }); return Nr; } function formfield_Nummer(){ var Name = new Ext.form.TextField({ fieldLabel: 'Nummer', name: 'Nummer', style: 'text-align: right', allowBlank: false, width: 165 }); return Name; } // Common form fields. END function AnlagenAfA(selectedId){ var Jahr_edit = formfield_Jahr(); var Nr_edit = formfield_Nr(); var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); //var PCNR_edit = formfield_Profitcenter(nav_cookie_anlagen); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", function(){ if (Von_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); Bis_edit.on("change", function(){ if (Bis_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); var Neuwert_edit = new Ext.form.NumberField({ fieldLabel: 'Neuwert', name: 'AfANeuwert', decimalSeparator: ',', suffix: '€', style: 'text-align: right', allowBlank: false, width: 165 }); Neuwert_edit.on('change', function(){ calculate(); }); var AfANutzung_edit = new Ext.form.NumberField({ fieldLabel: 'Dauer Nutzung', //helpText: 'tip(20)?>', name: 'AfAKalkDauer', style: 'text-align: right', decimalSeparator: '.', allowBlank: false, width: 165 }); AfANutzung_edit.on('change', function(){ calculate(); }); var AfADauer_edit = new Ext.form.NumberField({ fieldLabel: 'Dauer AfA', name: 'AfADauer', style: 'text-align: right', allowBlank: false, decimalSeparator: '.', width: 165 }); AfADauer_edit.on('change', function(){ //formPanel_Jahreswerte.getForm().findField('AfADauer').setValue(AfADauer_edit.getValue()); calculate(); }); AfANutzung_edit.on('change', function(){ //formPanel_Jahreswerte.getForm().findField('AfAKalkDauer').setValue(AfANutzung_edit.getValue()); calculate(); }); var formPanel_AfA = new Ext.form.FormPanel({ title: 'AfA', baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', method: 'POST', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=anlagen&id=' + selectedId + "&year=" + nav_cookie_anlagen.get("current_year"), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR' }, ['Bemerkung', 'PCNR', 'ANR', 'Name', 'Nummer', 'Funktion', 'Von', 'Bis', 'AfANeuwert', 'AfADauer', 'AfAKalkDauer', 'Jahr']), items: [ /* PCNR_edit, */ Nr_edit, Nummer_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, { xtype: 'compositefield', items: [Neuwert_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [AfADauer_edit, { xtype: 'displayfield', value: 'Monate' }] }, { xtype: 'compositefield', items: [AfANutzung_edit, { xtype: 'displayfield', value: 'Monate' }] }, Bemerkung_edit, Jahr_edit] }); return formPanel_AfA; } function AnlagenGruppe(selectedId){ var Nr_edit = formfield_Nr(); var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); //var PCNR_edit = formfield_Profitcenter(nav_cookie_anlagen); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", function(){ if (Von_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); Bis_edit.on("change", function(){ if (Bis_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); var formPanel_Gruppe = new Ext.form.FormPanel({ title: 'Gruppendaten', baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', method: 'POST', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=anlagen&id=' + selectedId + "&year=" + nav_cookie_anlagen.get("current_year"), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR' }, ['PCNR', 'ANR', 'Name', 'Funktion', 'Nummer', 'Von', 'Bis', 'Bemerkung']), items: [ /* PCNR_edit, */ Nummer_edit, Nr_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, Bemerkung_edit] }); //formPanel_Gruppe.load(); return formPanel_Gruppe; } function AnlagenMiete(selectedId){ var Nr_edit = formfield_Nr(); var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); //var PCNR_edit = formfield_Profitcenter(nav_cookie_anlagen); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", function(){ if (Von_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); Bis_edit.on("change", function(){ if (Bis_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); var MieteRate_edit = new Ext.form.NumberField({ id: 'Miete', fieldLabel: 'Rate', width: 165, style: 'text-align: right', name: 'MieteRate', decimalSeparator: ',', allowBlank: false, listeners: { change: calculate } }); var formPanel_Miete = new Ext.form.FormPanel({ title: 'Miete', baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', method: 'POST', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=anlagen&id=' + selectedId + "&year=" + nav_cookie_anlagen.get("current_year"), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR' }, ['ANR', 'Name', 'Nummer', 'Funktion', 'Von', 'Bis', 'MieteRate', 'PCNR', 'Bemerkung']), items: [ /* PCNR_edit, */ Nummer_edit, Nr_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, { xtype: 'compositefield', items: [MieteRate_edit, { xtype: 'displayfield', value: '€' }] }, Bemerkung_edit] }); //formPanel_Miete.load(); return formPanel_Miete; } function AnlagenLeasing(selectedId){ var Nr_edit = formfield_Nr(); var Nummer_edit = formfield_Nummer(); var Name_edit = formfield_Name(); var Funktion_edit = formfield_Funktion(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); //var PCNR_edit = formfield_Profitcenter(nav_cookie_anlagen); var Bemerkung_edit = formfield_Bemerkung(); Von_edit.on("change", function(){ if (Von_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); Bis_edit.on("change", function(){ if (Bis_edit.isValid()) { UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); var Rate_edit = new Ext.form.NumberField({ fieldLabel: 'Rate', width: 165, //helpText: 'tip(19)?>', style: 'text-align: right', name: 'LeasingRate', decimalSeparator: ',', allowBlank: false }); Rate_edit.on('change', function(){ calculate(); }); var ErsteRate_edit = new Ext.form.NumberField({ fieldLabel: 'Erste Rate', //helpText: 'tip(19)?>', width: 165, name: 'LeasingErsteRate', style: 'text-align: right', decimalSeparator: ',', allowBlank: false }); ErsteRate_edit.on('change', function(){ calculate(); }); var Dauer_edit = new Ext.form.NumberField({ fieldLabel: 'Dauer', // helpText: 'tip(19)?>', width: 165, name: 'LeasingDauer', style: 'text-align: right', allowBlank: false, allowDecimals: false }); Dauer_edit.on('change', function(){ calculate(); }); var formPanel_Leasing = new Ext.form.FormPanel({ title: 'Leasing', baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', method: 'POST', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=anlagen&id=' + selectedId + "&year=" + nav_cookie_anlagen.get("current_year"), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR' }, ['PCNR', 'Bemerkung', 'ANR', 'Nummer', 'Name', 'Funktion', 'Von', 'Bis', 'LeasingRate', 'LeasingErsteRate', 'LeasingDauer']), items: [ /* PCNR_edit, */ Nummer_edit, Nr_edit, Name_edit, Funktion_edit, Von_edit, Bis_edit, { xtype: 'compositefield', items: [Rate_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [ErsteRate_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Dauer_edit, { xtype: 'displayfield', value: 'Monate' }] }, Bemerkung_edit] }); //formPanel_Leasing.load(); return formPanel_Leasing; } /** * @param {boolean} close If the window close on 'no errors' */ function Save(close){ function Verteilungen(){ var jsonData = "["; var l = ZuordnungenGrid.store.getCount(); for (i = 0; i < l; i++) { ZuordnungenGrid.store.data.items[i].data['ANR'] = selectedId; //ZuordnungenGrid.store.data.items[i].data['PCNR'] = formPanel.getForm().findField('PCNR').getValue(); record = ZuordnungenGrid.store.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid&execute=calc_zuordnungen', params: { data: jsonData, key: 'ANR,Jahr', table: 'tbl_a_verteilungen' }, success: function(form, action){ reloadAllStores(); ZuordnungenGrid.store.reload(); if (!win_edit.isVisible()) { win_edit.destroy(); } } }); } function Jahreswerte(){ // -- Jahreswerte save.START var jsonData = "["; var l = UebersichtGrid.store.getCount(); for (i = 0; i < l; i++) { UebersichtGrid.store.data.items[i].data.ANR = selectedId; record = UebersichtGrid.store.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'ANR,Jahr', table: 'tbl_a_daten' }, success: function(form, action){ Verteilungen(); } }); } // -- Form save.START /*ANR 690138 AfADauer 96 AfAKalkDauer 96 AfANeuwert 2.000,00 Bemerkung Bis Funktion Jahr Name 1 Mikroskop Motic B1 binokular Nummer 690138 Von 26.09.2003 */ if (formPanel.form.isValid()) { Ext.Ajax.request({ url: 'io.php', params: { id: selectedId, field: 'ANR', table: 'tbl_a_stamm', Typ: type, GKZ: gkz, ANR: formPanel.getForm().findField('ANR').getValue(), AfADauer: type === 'AfA' ? formPanel.getForm().findField('AfADauer').getValue() : 0, AfAKalkDauer: type === 'AfA' ? formPanel.getForm().findField('AfAKalkDauer').getValue() : 0, AfANeuwert: type === 'AfA' ? formPanel.getForm().findField('AfANeuwert').getValue() : 0, LeasingRate: type === 'Leasing' ? formPanel.getForm().findField('LeasingRate').getValue() : 0, LeasingErsteRate: type === 'Leasing' ? formPanel.getForm().findField('LeasingErsteRate').getValue() : 0, LeasingDauer: type === 'Leasing' ? formPanel.getForm().findField('LeasingDauer').getValue() : 0, MieteRate: type === 'Miete' ? formPanel.getForm().findField('MieteRate').getValue() : 0, Bemerkung: formPanel.getForm().findField('Bemerkung').getValue(), Bis: formPanel.getForm().findField('Bis').getValue(), Funktion: formPanel.getForm().findField('Funktion').getValue(), //Jahr: formPanel.getForm().findField('Jahr').getValue(), Name: formPanel.getForm().findField('Name').getValue(), Nummer: formPanel.getForm().findField('Nummer').getValue(), Von: formPanel.getForm().findField('Von').getValue() }, success: function(form, action){ InfoMessage("Die Daten wurden gespeichert"); } }); /* formPanel.form.submit({ url: 'io.php', params: { id: selectedId, field: 'ANR', table: 'tbl_a_stamm', Typ: type, GKZ: gkz }, success: function(form, action){ InfoMessage("Die Daten wurden gespeichert"); } }); */ // for a NEW items.START if (selectedId == 1) { selectedId = formPanel.getForm().findField('ANR').getValue(); // Reloading and activating the Mitglied panel for new Gruppen / Durchschnitte . START if (gkz !== 'A') { formPanel_Jahreswerte.findById('anlagen-free-' + random_anlagen_id).store.load({ params: { type: 'free', year: nav_cookie_anlagen.get("current_year"), id: selectedId, start: 0, limit: oc.limit_records } }); formPanel_Jahreswerte.findById('anlagen-assigned-' + random_anlagen_id).store.load({ params: { year: nav_cookie_anlagen.get("current_year"), id: selectedId } }); } else { calculate(); } // Reloading and activating the Mitglied panel for new Gruppen / Durchschnitte . END // Activating locked tabitems.START UebersichtGrid.enable(); formPanel_Jahreswerte.enable(); ZuordnungenGrid.enable(); Jahreswerte(); // Activating locked tabitems.END } else { // for a NEW items.END if (gkz == 'A') { Jahreswerte(); } else { Verteilungen(); } } if (close) { win_edit.hide(); } } else { tabs.setActiveTab(formPanel); Ext.MessageBox.alert('Errors', 'Bitte, füllen Sie alle Felder im Stammdaten aus'); //cancel hiding window return false; } // -- Form save.END } function Jahreswerte(selectedId, year){ var Jahr_edit = new Ext.form.TextField({ fieldLabel: 'Jahr', name: 'Jahr', readOnly: true, cls: "readOnly", allowDecimals: false }); var Nutzungsgrad_edit = new Ext.form.NumberField({ fieldLabel: 'Nutzungsgrad', name: 'Nutzungsgrad', allowDecimals: false, allowBlank: false, style: 'text-align: right', width: 80, minValue: 1, maxValue: 100 }); Nutzungsgrad_edit.on('change', calculate); var Nutzungsstunden_edit = new Ext.form.NumberField({ fieldLabel: 'Nutzungsstunden', name: 'Nutzungsstunden', allowDecimals: false, suffix: 'h', allowBlank: false, minValue: 1 }); Nutzungsstunden_edit.on('change', calculate); // -- var afaneuwert = new Ext.form.NumberField({ name: 'AfANeuwert', id: 'AfANeuwert', hidden: true, hideLabel: true }); var afadauer = new Ext.form.NumberField({ name: 'AfADauer', id: 'AfADauer', hidden: true, hideLabel: true }); var von = new Ext.form.TextField({ name: 'Von', hidden: true, hideLabel: true }); var AfAKalkDauer_edit = new Ext.form.TextField({ name: 'AfAKalkDauer', hidden: true, hideLabel: true }); // -- var SonstigeKosten_edit = new Ext.form.NumberField({ fieldLabel: 'Sonstige Kosten', name: 'SK1', decimalSeparator: ',', decimalPrecision: 2, allowBlank: true, style: 'text-align: right', width: 80, emptyText: 0 }); SonstigeKosten_edit.on('change', calculate); var Reparaturkosten_edit = new Ext.form.NumberField({ fieldLabel: 'Reparaturkosten', name: 'SK2', decimalSeparator: ',', decimalPrecision: 2, style: 'text-align: right', width: 80, allowBlank: true, emptyText: 0 }); Reparaturkosten_edit.on('change', calculate); var StromGasWasser_edit = new Ext.form.NumberField({ fieldLabel: 'Strom/Gas/Wasser', name: 'SK3', decimalSeparator: ',', decimalPrecision: 2, style: 'text-align: right', width: 80, allowBlank: true }); StromGasWasser_edit.on('change', calculate); var AfA_edit = new Ext.form.NumberField({ fieldLabel: 'AfA', name: 'AfA', suffix: '€', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, cls: 'readOnly', style: 'text-align: right', width: 80 }); AfA_edit.on("focus", function(){ Nutzungsgrad_edit.focus(); }); var AfAKalk_edit = new Ext.form.NumberField({ fieldLabel: 'AfA Kalkulation', name: 'AfAKalk', suffix: '€', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, cls: 'readOnly', style: 'text-align: right', width: 80 }); var Betriebskosten_edit = new Ext.form.NumberField({ fieldLabel: 'Betriebskosten', name: 'Betriebskosten', suffix: '€', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, cls: 'readOnly', style: 'text-align: right', width: 80 }); var Kosten_edit = new Ext.form.NumberField({ fieldLabel: 'Kosten', name: 'Kosten', suffix: '€', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, cls: 'readOnly', style: 'text-align: right', width: 80 }); var Stundensatz_edit = new Ext.form.NumberField({ fieldLabel: 'Stundensatz', name: 'Stundensatz', suffix: '€', decimalSeparator: ',', decimalPrecision: 2, readOnly: true, cls: 'important_input', style: 'text-align: right', width: 80 }); var formPanel_Jahreswerte = new Ext.form.FormPanel({ title: 'Jahreswerte ' + nav_cookie_anlagen.get("current_year"), baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', frame: true, layout: 'column', bodyStyle: 'padding:15px', items: [{ defaults: { anchor: '95%', style: 'text-align: right', decimalPrecision: 2 }, columnWidth: 0.33, layout: 'form', border: false, items: [Jahr_edit, { xtype: 'compositefield', items: [Nutzungsgrad_edit, { xtype: 'displayfield', value: '%' }] }, Nutzungsstunden_edit, afaneuwert, afadauer, von, AfAKalkDauer_edit] }, { defaults: { anchor: '95%', style: 'text-align: right', decimalPrecision: 2, decimalSeparator: ',' }, columnWidth: 0.33, layout: 'form', border: false, items: [{ xtype: 'compositefield', items: [SonstigeKosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Reparaturkosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [StromGasWasser_edit, { xtype: 'displayfield', value: '€' }] }] }, { defaults: { anchor: '95%', style: 'text-align: right', decimalPrecision: 2, decimalSeparator: ',' }, columnWidth: 0.33, layout: 'form', border: false, items: [{ xtype: 'compositefield', items: [AfA_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [AfAKalk_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Betriebskosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Kosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Stundensatz_edit, { xtype: 'displayfield', value: '€', cls: 'important_input' }] }] }]/* , buttons: [{ text: 'Diese Werte für alle kommende Jahren übernehmen', iconCls: 'icon-defaults', handler: function(){ calculate(true); } }] */ }); return formPanel_Jahreswerte; } var formPanel_Jahreswerte = Jahreswerte(selectedId, nav_cookie_anlagen.get("current_year")); var ZuordnungenGrid = Zuordnungen(selectedId); switch (type) { case 'AfA': var formPanel = AnlagenAfA(selectedId); var UebersichtGrid = UebersichtAfA(selectedId); gkz = 'A'; //win_edit.setTitle("Anlagen AfA #"+selectedId); break; case 'Leasing': var formPanel = AnlagenLeasing(selectedId); var UebersichtGrid = UebersichtLeasing(selectedId); gkz = 'A'; //win_edit.setTitle("Leasing #"+selectedId); break; case 'Miete': var formPanel = AnlagenMiete(selectedId); var UebersichtGrid = UebersichtMiete(selectedId); gkz = 'A'; //win_edit.setTitle("Miete #"+selectedId); break; case 'Gruppe': gkz = 'G'; var formPanel = AnlagenGruppe(selectedId); var UebersichtGrid = UebersichtGruppe(selectedId); var formPanel_Jahreswerte = Gruppe(gkz, selectedId, nav_cookie_anlagen.get("current_year")); break; case 'Durchschnitte': gkz = 'M'; var formPanel = AnlagenGruppe(selectedId); var UebersichtGrid = UebersichtGruppe(selectedId); var formPanel_Jahreswerte = Gruppe(gkz, selectedId, nav_cookie_anlagen.get("current_year")); break; } var tabs = new Ext.TabPanel({ deferredRender: false, border: false, autoScroll: true, activeTab: 0, items: [formPanel, UebersichtGrid, formPanel_Jahreswerte, ZuordnungenGrid] }); var win_edit = new Ext.Window({ id: 'Anlagen-' + selectedId, iconCls: 'icon-house', collapsible: true, layout: 'fit', margins: '5 5 5 5', title: 'Anlagendaten', width: 700, height: 470, closeAction: 'destroy', plain: true, items: [tabs], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (Save(true)) { win_edit.hide(); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }, { text: 'Übernehmen', iconCls: 'icon-defaults', handler: function(){ Save(false); //reloadAllStores(); } }] }); //-------- PUBLIC EVENTS.START ----------- // Locking tabItems for new Items.START if (selectedId == 1) { UebersichtGrid.disable(); formPanel_Jahreswerte.disable(); ZuordnungenGrid.disable(); } // Locking tabItems for new Items.END formPanel.on("render", function(){ formPanel.getEl().mask('Daten werden geladen ...'); formPanel.load({ waitMsg: 'Daten werden geladen...', success: function(){ formPanel.getEl().unmask(); UebersichtGrid.store.load(); ZuordnungenGrid.store.load(); } }); }); UebersichtGrid.store.on("beforeload", function(){ var von = Date.parseDate(formPanel.getForm().findField('Von').value, 'd.m.Y'); var bis = Date.parseDate(formPanel.getForm().findField('Bis').value, 'd.m.Y'); if (!von) { von_year = plan_von; } else { von_year = von.getFullYear(); } if (!bis) { bis_year = plan_bis; } else { bis_year = bis.getFullYear(); } UebersichtGrid.store.baseParams = { von: von_year, bis: bis_year, id: formPanel.getForm().findField('ANR').getValue() }; }); ZuordnungenGrid.store.on("beforeload", function(){ var von = Date.parseDate(formPanel.getForm().findField('Von').value, 'd.m.Y'); var bis = Date.parseDate(formPanel.getForm().findField('Bis').value, 'd.m.Y'); if (!von) { von_year = plan_von; } else { von_year = von.getFullYear(); } if (!bis) { bis_year = plan_bis; } else { bis_year = bis.getFullYear(); } ZuordnungenGrid.store.baseParams = { von: von_year, bis: bis_year, id: formPanel.getForm().findField('ANR').getValue() }; }); UebersichtGrid.store.on("load", function(){ if (gkz == 'A') { selId = UebersichtGrid.store.indexOfId(String(nav_cookie_anlagen.get("current_year"))); if (selId == -1) { var von = Date.parseDate(formPanel.getForm().findField('Von').value, 'd.m.Y'); selId = UebersichtGrid.store.indexOfId(String(von.getFullYear())); } calculate(); setJahreswerte(selId); } }); UebersichtGrid.on('rowclick', function(UebersichtGrid, selId, e){ storeUebersichtGrid = UebersichtGrid.getStore(); if (gkz == 'A') { setJahreswerte(selId); } else { var selectedYear = storeUebersichtGrid.data.items[selId].id; formPanel_Jahreswerte.setTitle("Mitglieder " + selectedYear); formPanel_Jahreswerte.findById('anlagen-free-' + random_anlagen_id).store.load({ params: { type: 'free', year: selectedYear, id: selectedId, start: 0, limit: oc.limit_records } }); formPanel_Jahreswerte.findById('anlagen-assigned-' + random_anlagen_id).store.load({ params: { year: selectedYear, id: selectedId } }); } tabs.setActiveTab(formPanel_Jahreswerte); }); //-------- PUBLIC EVENTS.END ----------- win_edit.show(); function Zuordnungen(selectedId){ var ZuordnungenGrid = new oc.zGrid({ ztype: 'anlagen', selectedId: selectedId }); return ZuordnungenGrid; } } function Gruppen(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.get('ANR'), record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var storeGruppen = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&gkz=G', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }]) }); var Gruppencm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120 }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, action_delete]); // by default columns are sortable Gruppencm.defaultSortable = true; var GruppenGrid = new oc.Grid({ title: 'Gruppen', store: storeGruppen, cm: Gruppencm, view: AnlagenGroupView(), tbar: [{ text: 'Neue Gruppe ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'Gruppe'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(GruppenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(GruppenGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('ANR'), 'Gruppe', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeGruppen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete] }); return GruppenGrid; } function Zuordnungen(){ var ZuordnungenGrid = new oc.zGrid({ ztype: 'anlagen', viewConfig: { forceFit: true } }); return ZuordnungenGrid; } var storeProfitCenter_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=anlagen', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PCNR' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo){ this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; }, collapse: function(combo){ if (nav_cookie_anlagen.get("current_profitcenter") == combo.getValue()) return false; nav_cookie_anlagen.set("current_profitcenter", combo.getValue() || 0); storeYear_dropdown.load({ params: { pc: nav_cookie_anlagen.get("current_profitcenter") } }); reloadAllStores(false, combo.getValue()); } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=anlagen', method: 'POST', baseParams: { pc: nav_cookie_anlagen.get("current_profitcenter") } }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ name: 'Year', typeAhead: false, editable: false, store: storeYear_dropdown, displayField: 'title', valueField: 'id', forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, beforequery: function(combo){ this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; }, collapse: function(combo){ if (nav_cookie_anlagen.get("current_year") == combo.getValue()) return false; nav_cookie_anlagen.set("current_year", combo.getValue()); storeProfitCenter_dropdown.load({ params: { year: nav_cookie_anlagen.get("current_year") } }); reloadAllStores(combo.getValue()); } } }); function not_null_renderer(v){ if (v == 0) { return ''; } else { return v; } } function AfA(){ var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteRecord(record.data.ANR, record, grid.getStore()); }, tooltip: 'Anlage Löschen' }] }); var storeAnlagen = new oc.gStore({ groupField: 'ProfitCenter', sortInfo: { field: 'ProfitCenter', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagen&type=AfA', method: 'POST', baseParams: { start: 0, limit: oc.limit_records, year: current_year, profitcenter: nav_cookie_anlagen.get("current_profitcenter"), type: 'AfA' } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'ProfitCenter' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Allgemein' }, { name: 'AfANeuwert', type: 'float' }, { name: 'AfADauer' }, { name: 'AfA', type: 'float' }, { name: 'AfAKalk', type: 'float' }, { name: 'AfADauer', type: 'int' }, { name: 'AfARestwert', type: 'float' }, { name: 'D_sum', type: 'int' }, { name: 'G_sum', type: 'int' }, { name: 'K_sum', type: 'int' }]) }); allgemein = new Ext.grid.CheckColumn({ id: 'Allgemein', header: 'Allgemein', dataIndex: 'Allgemein', width: 55 }); var Anlagencm = new Ext.grid.ColumnModel([{ id: 'ProfitCenter', header: "ProfitCenter", dataIndex: 'ProfitCenter' }, { id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 60 }, { header: "Name", dataIndex: 'Name', width: 120, renderer: function(value, p, record){ //p.attr = 'ext:qtip="' + value + '" ext:qtitle="Tooltip Title!"'; return value; } }, { header: "Funktion", dataIndex: 'Funktion', width: 80 }, { header: "Von", dataIndex: 'Von', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 80, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, allgemein, { header: "Neuwert", dataIndex: 'AfANeuwert', width: 80, renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "AfA Monate", dataIndex: 'AfADauer', //tooltip: 'tip(19)?>', width: 80, align: 'right' }, { header: "Restwert ", dataIndex: 'AfARestwert', width: 80, renderer: 'deMoney', align: 'right', summaryType: 'sum' }, { header: "AfA ", dataIndex: 'AfA', renderer: 'deMoney', width: 80, align: 'right', summaryType: 'sum' }, { header: "AfA Kalk", renderer: 'deMoney', dataIndex: 'AfAKalk', width: 80, align: 'right', summaryType: 'sum' }, { header: "K", dataIndex: 'K_sum', renderer: not_null_renderer, width: 20 }, { header: "G", dataIndex: 'G_sum', renderer: not_null_renderer, width: 20 }, { header: "D", dataIndex: 'D_sum', renderer: not_null_renderer, width: 20 }, action_delete]); // by default columns are sortable Anlagencm.defaultSortable = true; var AnlagenGrid = new oc.Grid({ view: AnlagenGroupView(), viewConfig: { forceFit: true }, title: 'AfA', store: storeAnlagen, cm: Anlagencm, tbar: [{ text: 'Neue Anlage ', iconCls: 'icon-plus', handler: function(){ EditWindow(1, 'AfA'); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(AnlagenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(AnlagenGrid, 'print'); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.id, 'AfA', record); } }, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_anlagen, pageSize: oc.limit_records, store: storeAnlagen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ disableIndexes: ['AfANeuwert', 'AfADauer', 'AfARestwert', 'AfA', 'AfAKalk', 'Von', 'Bis', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'ProfitCenter'], fieldsprefix: 'tbl_a_stamm.' }), action_delete, allgemein, new Ext.ux.grid.GroupSummary()] }); // Public Events . START allgemein.on("click", function(a, e, record){ updateAnlagenAllgemein(record.data.ANR, record.data.Allgemein); record.commit(); }); // Public Events . END return AnlagenGrid; } var AfAGrid = AfA(); var LeasingGrid = Leasing(); var MieteGrid = Miete(); var UebersichtAnlagenGrid = UebersichtAnlagen(); var GruppenGrid = Gruppen(); var DurchschnitteGrid = Durchschnitte(); var UebersichtGruppenGrid = UebersichtGruppen(); var UebersichtDurchschnitteGrid = UebersichtGruppen("M"); var ZuordnungenGrid = Zuordnungen(); UebersichtDurchschnitteGrid.setTitle("Übersicht Durchschnitte"); var AnlagenTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [AfAGrid, LeasingGrid, MieteGrid, GruppenGrid, DurchschnitteGrid, UebersichtAnlagenGrid, UebersichtGruppenGrid, UebersichtDurchschnitteGrid, ZuordnungenGrid] }); var AnlagenPanel = new Ext.Panel({ title: 'Anlagen', iconCls: 'icon-house', id: 'Anlagen-panel', collapsible: false, border: false, layout: 'fit', tbar: ['ProfitCenter : ', ' ', ProfitCenter_dropdown, ' ', 'Jahr : ', ' ', Year_dropdown], items: [AnlagenTabs] }); //-------- PUBLIC EVENTS.START ----------- /* Year_dropdown.on('collapse', function(combo){ nav_cookie_anlagen.set("current_year", combo.getValue()); storeProfitCenter_dropdown.load({ params: { year: nav_cookie_anlagen.get("current_year") } }); reloadAllStores(combo.getValue()); }); ProfitCenter_dropdown.on('collapse', function(combo){ nav_cookie_anlagen.set("current_profitcenter", combo.getValue()); storeYear_dropdown.load({ params: { pc: nav_cookie_anlagen.get("current_profitcenter") } }); reloadAllStores(false, combo.getValue()); }); */ // render events AfAGrid.on('render', function(){ reloadStore(AfAGrid.store); }); LeasingGrid.on('render', function(){ reloadStore(LeasingGrid.store); }); ZuordnungenGrid.on('render', function(){ reloadStore(ZuordnungenGrid.store); }); MieteGrid.on('render', function(){ reloadStore(MieteGrid.store); }); UebersichtGruppenGrid.on('render', function(){ reloadStore(UebersichtGruppenGrid.store); }); GruppenGrid.on('render', function(){ reloadStore(GruppenGrid.store); }); DurchschnitteGrid.on('render', function(){ reloadStore(DurchschnitteGrid.store); }); UebersichtAnlagenGrid.on('render', function(){ reloadStore(UebersichtAnlagenGrid.store); }); UebersichtDurchschnitteGrid.on('render', function(){ reloadStore(UebersichtDurchschnitteGrid.store); }); //-------- PUBLIC EVENTS.END ----------- function reloadStore(store, year, profitcenter){ if (!year) { year = nav_cookie_anlagen.get("current_year"); } if (!profitcenter) { profitcenter = nav_cookie_anlagen.get("current_profitcenter"); } store.load({ params: { start: 0, limit: oc.limit_records, year: year, profitcenter: profitcenter } }); } function reloadAllStores(year, profitcenter){ if (!year) { year = nav_cookie_anlagen.get("current_year"); } else { year = false; } if (!profitcenter) { profitcenter = nav_cookie_anlagen.get("current_profitcenter"); } else { profitcenter = false; } if (AfAGrid.getEl()) { reloadStore(AfAGrid.store, year, profitcenter); } if (LeasingGrid.getEl()) { reloadStore(LeasingGrid.store, year, profitcenter); } if (MieteGrid.getEl()) { reloadStore(MieteGrid.store, year, profitcenter); } if (GruppenGrid.getEl()) { reloadStore(GruppenGrid.store, year, profitcenter); } if (DurchschnitteGrid.getEl()) { reloadStore(DurchschnitteGrid.store, year, profitcenter); } if (UebersichtAnlagenGrid.getEl()) { reloadStore(UebersichtAnlagenGrid.store, year, profitcenter); } if (UebersichtGruppenGrid.getEl()) { reloadStore(UebersichtGruppenGrid.store, year, profitcenter); } if (UebersichtDurchschnitteGrid.getEl()) { reloadStore(UebersichtDurchschnitteGrid.store, year, profitcenter); } } return { returnGrid: function(){ return AnlagenPanel; } }; }; oc.MaterialGridPanel = function(item){ nav_cookie_material.set("current_year", plan_current); function deleteRecord(id, record, store){ assigments = (record.data.KalkulationenCount ? ('Es nimmt teil an ' + record.data.KalkulationenCount + ' Kalkulationen') : ''); function result(btn){ if (btn == 'ok') { win = Ext.getCmp('Material-' + id); if (win) { win.destroy(); } Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: id, target: 'material' }, success: function(form, action){ store.reload(); } }); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie ' + record.data.Artikel + ' löschen möchten? ' + assigments, width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: result }); } var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=anlagen&pc=0' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ name: 'Year', typeAhead: false, editable: false, store: storeYear_dropdown, displayField: 'title', valueField: 'id', forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); } } }); function LieferantDropdown(){ var storeLieferanten = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=lieferanten' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'lieferant' }, { name: 'value' }]) }); var Lieferant_edit = new Ext.form.ComboBox({ name: 'Lieferant', fieldLabel: 'Lieferant', typeAhead: false, editable: true, triggerAction: 'all', store: storeLieferanten, displayField: 'lieferant', valueField: 'value', anchor: '90%', emptyText: 'Alle' }); return Lieferant_edit; } function KategorieDropdown(){ var storeKategorien = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=material_kategorien' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'kategorie' }, { name: 'value' }]) }); var Kategorie_edit = new Ext.form.ComboBox({ name: 'Kategorie', fieldLabel: 'Kategorie', typeAhead: false, triggerAction: 'all', editable: true, store: storeKategorien, displayField: 'kategorie', valueField: 'value', anchor: '90%', emptyText: 'Alle' }); return Kategorie_edit; } // Edit Window Method function EditWindow(selectedId){ win = Ext.getCmp('Material-' + selectedId); if (win) { win.show(); win.expand(); return false; } function save(close){ function daten(){ var jsonData = "["; var l = uebersichtGrid.getStore().getCount(); for (i = 0; i < l; i++) { record = uebersichtGrid.getStore().getAt(i); record.set('MNR', MNR_edit.getValue()); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'MNR,Jahr', table: 'tblmaterial_daten' }, success: function(form, action){ InfoMessage("Die Daten wurden gespeichert"); formPanel_Material.getEl().unmask(); storeMaterial.reload(); uebersichtGrid.getStore().commitChanges(); if (close) { win_edit.destroy(); } } }); } function form(){ if (formPanel_Material.form.isValid()) { formPanel_Material.getEl().mask('Speichern ...'); formPanel_Material.form.submit({ url: 'io.php', params: { id: selectedId, field: 'MNR', table: 'tblmaterial' }, success: function(form, action){ if (action.result.action === 'insert') { selectedId = action.result.id; } daten(); }, failure: function(form, action){ formPanel_Material.getEl().unmask(); Ext.MessageBox.alert('Fehler!', action.response.responseJSON.errorInfo); } }); } else { Ext.MessageBox.alert('Fehler!', 'Bitte, füllen Sie alle Pflichtfelder aus'); //cancel hiding window return false; } } // check form value form(); } function mUebersicht(id){ var store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=muebersicht' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Jahr' }, [{ name: 'Jahr' }, { name: 'Gebinde' }, { name: 'Einzelpreis' }, { name: 'Gesamtpreis' }]), listeners: { load: function(){ record = store.getById(Number(nav_cookie_material.get('current_year'))); // fix for the case that there are no data for the current selected year if (!record) { record = this.getAt(0); } formPanel_Jahreswerte.getForm().loadRecord(record); } } }); var Uebersichtcm = new Ext.grid.ColumnModel([{ id: 'Jahr', header: "Jahr", dataIndex: 'Jahr', width: 50 }, { id: 'Gebinde', header: "Gebinde", dataIndex: 'Gebinde', align: 'right' }, { id: 'Einzelpreis', header: "Einzelpreis", dataIndex: 'Einzelpreis', renderer: "deMoney", align: 'right' }, { id: 'Gesamtpreis', header: "Gesamtpreis", dataIndex: 'Gesamtpreis', align: 'right', renderer: "deMoney" }]); // create the editor grid var UebersichtGrid = new oc.Grid({ title: 'Übersicht', viewConfig: { forceFit: true }, store: store, cm: Uebersichtcm, listeners: { rowclick: function(UebersichtGrid, selId, e){ record = store.getAt(selId); formPanel_Jahreswerte.getForm().loadRecord(record); formPanel_Jahreswerte.setTitle("Jahreswerte " + record.id); tabs.setActiveTab(formPanel_Jahreswerte); } } }); Uebersichtcm.defaultSortable = true; return UebersichtGrid; } //------------------------------- FORM ELEMENTS.START ---------------------------------------------- var MNR_edit = new Ext.form.Hidden({ name: 'MNR' }); var ArtikelNr_edit = new Ext.form.TextField({ fieldLabel: 'ArtikelNr', name: 'ArtikelNr', anchor: '90%' }); var Artikel_edit = new Ext.form.TextField({ listeners: { valid: function(){ win_edit.setTitle(this.getValue()); } }, fieldLabel: 'Artikel', name: 'Artikel', allowBlank: false, anchor: '90%' }); var Einheit_edit = new Ext.form.TextField({ helpText: '', fieldLabel: 'Einheit', name: 'Einheit', allowBlank: false, anchor: '90%' }); var Gebinde_edit = new Ext.form.NumberField({ fieldLabel: 'Gebinde', name: 'Gebinde', allowBlank: false, //width: 130, style: 'text-align: right; width: 130px;', decimalSeparator: '.', allowDecimals: false, allowNegative: false, minValue: 1 }); var Jahr_edit = new Ext.form.NumberField({ hidden: true, hideLabel: true, fieldLabel: 'Jahr', name: 'Jahr' }); var Gesamtpreis_edit = new Ext.form.NumberField({ fieldLabel: 'Gesamtpreis', name: 'Gesamtpreis', allowBlank: false, decimalSeparator: ',', decimalPrecision: 2, style: 'text-align: right; width: 130px;', allowNegative: false }); var Einzelpreis_edit = new Ext.form.NumberField({ fieldLabel: 'Einzelpreis', name: 'Einzelpreis', allowBlank: false, decimalSeparator: ',', decimalPrecision: 2, style: 'text-align: right; width: 130px' //allowNegative: false }); var Gueltig_edit = new Ext.form.DateField({ fieldLabel: 'Gültig ab', name: 'Datum', format: 'd.m.Y', anchor: '60%', allowBlank: false }); // define on the fly calculations Gebinde_edit.on('change', function(e){ if (formPanel_Jahreswerte.getForm().isValid()) { Gesamtpreis_edit.setValue(Einzelpreis_edit.getValue() * this.getValue()); formPanel_Jahreswerte.getForm().updateRecord(uebersichtGrid.getStore().getById(Jahr_edit.getValue())); } }); Einzelpreis_edit.on('change', function(e){ if (formPanel_Jahreswerte.getForm().isValid()) { Gesamtpreis_edit.setValue(this.getValue() * Gebinde_edit.getValue()); formPanel_Jahreswerte.getForm().updateRecord(uebersichtGrid.getStore().getById(Jahr_edit.getValue())); } }); Gesamtpreis_edit.on('change', function(e){ if (formPanel_Jahreswerte.getForm().isValid()) { Einzelpreis_edit.setValue(this.getValue() / Gebinde_edit.getValue()); formPanel_Jahreswerte.getForm().updateRecord(uebersichtGrid.getStore().getById(Jahr_edit.getValue())); } }); Gueltig_edit.on('change', function(){ if (formPanel_Jahreswerte.getForm().isValid()) { loadUebersicht(); } }); //------------------------------- FORM ELEMENTS.END---------------------------------------------- var formPanel_Material = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', height: '200', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=material&id=' + selectedId, reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR' }, ['MNR', 'Kategorie', 'Lieferant', 'ArtikelNr', 'Artikel', 'Einheit', 'Datum']), items: [MNR_edit, KategorieDropdown(), LieferantDropdown(), ArtikelNr_edit, Artikel_edit, Einheit_edit, Gueltig_edit] }); function loadUebersicht(){ var store_von; if (Gueltig_edit.getValue()) { var Von = Gueltig_edit.value; var von_date = Date.parseDate(Von, 'd.m.Y'); store_von = von_date.getFullYear(); } else { store_von = plan_von; } uebersichtGrid.getStore().load({ params: { id: MNR_edit.getValue(), von: store_von, bis: plan_bis } }); } formPanel_Material.load({ waitMsg: 'Daten werden geladen...', success: function(){ loadUebersicht(); } }); var mainDataPanel = new Ext.Panel({ region: 'north', height: 170, layout: 'fit', items: [formPanel_Material] }); var uebersichtGrid = mUebersicht(selectedId); var formPanel_Jahreswerte = new Ext.form.FormPanel({ title: 'Jahreswerte ' + nav_cookie_material.get('current_year'), baseCls: 'x-plain', labelWidth: 100, //labelSeparator: '', bodyStyle: 'padding:15px', items: [Jahr_edit, Gebinde_edit, { xtype: 'compositefield', items: [Einzelpreis_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [Gesamtpreis_edit, { xtype: 'displayfield', value: '€' }] }] }); var tabs = new Ext.TabPanel({ deferredRender: false, border: false, region: 'center', autoScroll: true, activeTab: 0, items: [formPanel_Jahreswerte, { title: 'Übersicht', items: uebersichtGrid, layout: 'fit' }] }); var win_edit = new Ext.Window({ iconCls: 'icon-cart', id: 'Material-' + selectedId, collapsible: true, layout: 'border', margins: '5 5 5 5', title: 'Material', width: 400, height: 380, closeAction: 'destroy', plain: true, items: [mainDataPanel, tabs], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ save(true); } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }, { text: 'Übernehmen', iconCls: 'icon-defaults', handler: function(){ save(false); } }] }); win_edit.show(); } var tabsLetters = new Ext.TabPanel({ region: 'north', //layout: 'fit', border: false, activeTab: 0, items: [{ title: "Alles", id: 'all' }, { title: "A B", id: 'A,B' }, { title: "C D", id: 'C,D' }, { title: "E F", id: 'E,F' }, { title: "G H", id: 'G,H' }, { title: "I J K", id: 'I,J,K' }, { title: "L M", id: 'L,M' }, { title: "N O", id: 'N,O' }, { title: "P Q R", id: 'P,Q,R' }, { title: "S T", id: 'S,T' }, { title: "U V W", id: 'U,V,W' }, { title: "X Y Z", id: 'X,Y,Z' }], listeners: { tabchange: function(tabs, item){ nav_cookie_material.set("current_letters", item.id); current_letters = item.id; storeMaterial.load({ params: { start: 0, limit: oc.limit_records, year: nav_cookie_material.get("current_year"), letters: current_letters } }); } } }); var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', qtipIndex: 'qtip1', callback: function(grid, record, action, row, col){ deleteRecord(record.data.MNR, record, storeMaterial); //deleteRecord(record.get('PNR'), record, storeUberTeams); }, tooltip: 'Team L�schen' }] }); var Materialcm = new Ext.grid.ColumnModel([{ header: "ArtikelNr", dataIndex: 'ArtikelNr', align: 'right', width: 100, resizable: false }, { header: "Artikel", dataIndex: 'Artikel' }, { header: "Gebinde", dataIndex: 'Gebinde', align: 'right' }, { header: "Einheit", dataIndex: 'Einheit' }, { header: "Gesamtpreis", dataIndex: 'Gesamtpreis', renderer: 'deMoney', align: 'right' }, { header: "Einzelpreis", dataIndex: 'Einzelpreis', renderer: 'deMoney', align: 'right' }, { header: "Datum", dataIndex: 'Datum', renderer: Ext.util.Format.dateRenderer('d.m.Y'), align: 'right', width: 100, resizable: false }, { header: "Kategorie", dataIndex: 'Kategorie', hidden: true }, action_delete]); Materialcm.defaultSortable = true; mView = new Ext.grid.GroupingView({ forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Einträge" : "Eintrag"]})' }); var storeMaterial = new oc.gStore({ groupField: 'Kategorie', sortInfo: { field: 'Artikel', direction: "ASC" }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=material', method: 'POST', baseParams: { year: nav_cookie_material.get("current_year"), letters: current_letters, base: 1 }, params: { start: 0, limit: oc.limit_records, letters: current_letters } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR', totalProperty: 'total' }, [{ name: 'MNR' }, { name: 'ArtikelNr' }, { name: 'Artikel' }, { name: 'Kategorie' }, { name: 'Einheit' }, { name: 'Gebinde', type: 'int' }, { name: 'Gesamtpreis', type: 'float' }, { name: 'Einzelpreis', type: 'float' }, { name: 'Datum', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Lieferant' }]) }); var MaterialGrid = new oc.Grid({ listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.get('MNR')); } }, region: 'center', layout: 'fit', store: storeMaterial, cm: Materialcm, view: mView, bbar: new Ext.AdvancedPagingToolbar({ //plugins: new Ext.ux.Andrie.pPageSize(), nav_var: nav_cookie_material, pageSize: oc.limit_records, store: storeMaterial, displayInfo: true, paramNames: { start: "start", limit: "limit", letters: "letters" }, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), tbar: [{ text: 'Neu', iconCls: 'icon-plus', handler: function(){ EditWindow(1); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(MaterialGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(MaterialGrid, 'print'); } }], plugins: [new oc.Search({ fieldsprefix: '', disableIndexes: ['Datum'] }), action_delete] }); KategorieFilter = KategorieDropdown(); LieferantFilter = LieferantDropdown(); MaterialPanel = new Ext.Panel({ id: 'Material-panel', iconCls: 'icon-cart', title: 'Material', collapsible: false, border: false, layout: 'border', autoScroll: true, tbar: ['Jahr : ', ' ', Year_dropdown, ' ', '  Kategorie : ', KategorieFilter, ' ', { iconCls: 'icon-refresh', handler: function(){ nav_cookie_material.set('kategorie', ''); tabsLetters.setActiveTab('all'); storeMaterial.load({ params: { year: nav_cookie_material.get('current_year'), start: 0, limit: oc.limit_records, letters: 'all', lieferant: nav_cookie_material.get('lieferant') } }); KategorieFilter.setValue("Alle"); } }, '  Lieferant : ', LieferantFilter, { iconCls: 'icon-refresh', handler: function(){ nav_cookie_material.set('lieferant', ''); tabsLetters.setActiveTab('all'); storeMaterial.load({ params: { year: nav_cookie_material.get('current_year'), start: 0, limit: oc.limit_records, letters: 'all', kategorie: nav_cookie_material.get('kategorie') } }); LieferantFilter.setValue("Alle"); } }, { text: 'Hilfe ?', handler: function(){ DocWin("Material", 'docs/material.html'); } }], items: [tabsLetters, MaterialGrid] }); //-------- PUBLIC EVENTS.START ----------- Year_dropdown.on('collapse', function(combo){ current_year = combo.getValue(); nav_cookie_material.set('current_year', combo.getValue()); tabsLetters.setActiveTab('all'); storeMaterial.load({ params: { year: combo.getValue(), start: 0, limit: oc.limit_records, letters: 'all', lieferant: nav_cookie_material.get('lieferant'), kategorie: nav_cookie_material.get('kategorie') } }); }); KategorieFilter.on('collapse', function(combo){ nav_cookie_material.set('kategorie', combo.getValue()); tabsLetters.setActiveTab('all'); storeMaterial.load({ params: { year: nav_cookie_material.get('current_year'), start: 0, limit: oc.limit_records, letters: 'all', kategorie: nav_cookie_material.get('kategorie'), lieferant: nav_cookie_material.get('lieferant') } }); }); LieferantFilter.on('collapse', function(combo){ nav_cookie_material.set('lieferant', combo.getValue()); tabsLetters.setActiveTab('all'); storeMaterial.load({ params: { year: nav_cookie_material.get('current_year'), start: 0, limit: oc.limit_records, letters: 'all', kategorie: nav_cookie_material.get('kategorie'), lieferant: nav_cookie_material.get('lieferant') } }); }); //-------- PUBLIC EVENTS.END ----------- return { returnGrid: function(){ return MaterialPanel; } }; }; oc.Parameter = function(){ function profitCenter(){ nav_cookie_pc.set("current_year", plan_current); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=profitcenter' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ emptyText: nav_cookie_pc.get("current_year"), name: 'Year', editable: false, typeAhead: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); Year_dropdown.on("collapse", function(combo){ storeProfitCenter.load({ params: { year: combo.getValue() } }); //nav_cookie_pc.set("current_year", combo.getValue()); }); /** * Ergebnisse-renderer * @param {Number} erg */ function erg_rend(erg){ if (erg) { return 'vorhanden'; } return ''; } function deleteProfitcenter(record, store){ function result(btn){ if (btn == 'ok') { Ext.Ajax.request({ url: 'api.php?a=deleteProfitcenter', params: { pcnr: record.id }, success: function(result, action){ var res = Ext.util.JSON.decode(result.responseText); if (res.success === true) { store.reload(); InfoMessage('Der ProfitCenter wurde erfolgreich gelöscht.'); } else { Ext.MessageBox.alert('Fehler', res.errorInfo); } } }); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie ' + record.data.ProfitCenter + ' löschen möchten? ', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: result }); } var pcGridActions = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record){ deleteProfitcenter(record, grid.getStore()); }, tooltip: 'ProfitCenter Löschen' }] }); var ProfitCentercm = new Ext.grid.ColumnModel([{ header: "Nr", dataIndex: 'PCNR', width: 40 }, { header: "ProfitCenter", dataIndex: 'ProfitCenter', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }, { header: "Von", dataIndex: 'Von', width: 100, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Bis", dataIndex: 'Bis', width: 100, renderer: Ext.util.Format.dateRenderer('d.m.Y') }, { header: "Ergebnisse", dataIndex: 'erg', width: 100, renderer: erg_rend }, pcGridActions]); ProfitCentercm.defaultSortable = true; var storeProfitCenter = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PCNR' }, [{ name: 'PCNR', type: 'int' }, { name: 'ProfitCenter' }, { name: 'Von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'erg' }, { name: 'Verteilung_nach_Umsatz', type: "float" }]) }); function EditWindow(selectedId){ function formfield_PCNR(){ var PCNR = new Ext.form.TextField({ fieldLabel: 'Nr', name: 'PCNR', anchor: '90%', allowBlank: false }); if (selectedId !== storeProfitCenter.getCount()) { PCNR.setDisabled(true); } else { //PCNR.setValue(Number(storeProfitCenter.getCount())); } return PCNR; } function formfield_ProfitCenter(){ var ProfitCenter = new Ext.form.TextField({ fieldLabel: 'ProfitCenter', name: 'ProfitCenter', anchor: '90%', allowBlank: false }); return ProfitCenter; } function formfield_Von(){ var Von = new Ext.form.DateField({ fieldLabel: 'Von', name: 'Von', format: 'd.m.Y', anchor: '90%' }); return Von; } function formfield_Bis(){ var Bis = new Ext.form.DateField({ fieldLabel: 'Bis', name: 'Bis', format: 'd.m.Y', anchor: '90%' }); return Bis; } function ProfitCenter(selectedId){ var PCNR_edit = formfield_PCNR(); var ProfitCenter_edit = formfield_ProfitCenter(); var Von_edit = formfield_Von(); var Bis_edit = formfield_Bis(); var formPanel_ProfitCenter = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 75, bodyStyle: 'padding:15px', labelSeparator: ' ', url: 'api.php?a=list&t=profitcenter&id=' + selectedId, reader: new Ext.data.JsonReader({ root: 'data' }, ['PCNR', 'ProfitCenter', 'Von', 'Bis']), items: [PCNR_edit, ProfitCenter_edit, Von_edit, Bis_edit] }); formPanel_ProfitCenter.load(); return formPanel_ProfitCenter; } var formPanel = ProfitCenter(selectedId); var win = new Ext.Window({ layout: 'fit', title: 'Bearbeiten ' /* + record.data.ProfitCenter */, width: 350, height: 200, closeAction: 'hide', plain: true, items: [formPanel], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (formPanel.form.isValid()) { formPanel.form.submit({ url: 'io.php', params: { id: selectedId, field: 'PCNR', table: 'profitcenter' }, waitMsg: 'Die Daten werden gespreichert...', failure: function(form, action){ Ext.MessageBox.alert('Fehler', action.result.errorInfo); }, success: function(form, action){ storeProfitCenter.reload(); if (selectedId == 1) { selectedId = formPanel.getForm().findField('PCNR').getValue(); } win.hide(); } }); } else { Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Pflichtfelder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win.hide(); } }] }); win.show(); } var ProfitCenterGrid = new oc.Grid({ listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); EditWindow(record.data.PCNR); } }, id: 'grid007', store: storeProfitCenter, printTitle: 'ProfitCenter', cm: ProfitCentercm, title: 'ProfitCenter', tbar: [{ text: 'Aktualisieren ', iconCls: 'icon-db-refresh', handler: function(){ storeProfitCenter.reload(); } }, '-', { text: 'Neu ', iconCls: 'icon-plus', handler: function(){ EditWindow(storeProfitCenter.getCount()); } }, /*'Jahr : ', Year_dropdown, */'->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(ProfitCenterGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(ProfitCenterGrid, 'print'); } }], plugins: [pcGridActions] }); ProfitCenterGrid.on('render', function(){ ProfitCenterGrid.store.load({ params: { year: nav_cookie_pc.get("current_year") } }); }); return ProfitCenterGrid; } function Users(){ function deleteUser(record, store){ function Result(btn){ if (btn == 'ok') { Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: record.data.UNR, target: 'user' }, success: function(form, action){ store.reload(); } }); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie ' + record.data.username + ' löschen möchten?', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: Result }); } function edit_User(record){ var administrator = new Ext.ux.form.XCheckbox({ fieldLabel: 'Administrator', name: 'level' }); var UNR_edit = new Ext.form.NumberField({ fieldLabel: 'Nummer', name: 'UNR', readOnly: true }); if (!record.data) { UNR_edit.disable(); } var formPanel_User = new Ext.form.FormPanel({ url: 'io.php', listeners: { afterlayout: function(){ if (record) { formPanel_User.getForm().loadRecord(record); } } }, baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', bodyStyle: 'padding:15px', defaults: { xtype: 'textfield', anchor: '100%' }, items: [UNR_edit, { name: 'username', fieldLabel: 'Benutzername', allowBlank: false }, { name: 'password', fieldLabel: 'Password', allowBlank: false }, { name: 'vorname', fieldLabel: 'Vorname', allowBlank: false }, { name: 'name', fieldLabel: 'Name', allowBlank: false }, administrator] }); var win_edit = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Benutzer bearbeiten', closeAction: 'destroy', width: 300, height: 250, plain: true, items: [formPanel_User], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (formPanel_User.form.isValid()) { formPanel_User.getForm().submit({ params: { table: 'users', field: 'UNR', id: UNR_edit.getValue() }, success: function(){ win_edit.destroy(); UsersGrid.getStore().reload(); } }); } else { Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Pflichtfelder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }] }); win_edit.show(); } var level = new Ext.grid.CheckColumn({ header: 'Administrator', dataIndex: 'level', width: 100 }); var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col){ deleteUser(record, grid.getStore()); }, tooltip: 'Benutzer Löschen' }] }); var Userscm = new Ext.grid.ColumnModel([{ header: "Nr.", dataIndex: 'UNR', width: 50 }, { header: "Benutzername", dataIndex: 'username', width: 200 }, { header: "Name", dataIndex: 'name' }, { header: "Vorname", dataIndex: 'vorname' }, level, action_delete]); Userscm.defaultSortable = true; var storeUsers = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=users' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'UNR' }, [{ name: 'UNR' }, { name: 'username' }, { name: 'name' }, { name: 'vorname' }, { name: 'password' }, { name: 'level' }]) }); var UsersGrid = new oc.Grid({ listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); edit_User(record); } }, store: storeUsers, cm: Userscm, title: 'Benutzer', stripeRows: true, plugins: [action_delete], tbar: [{ text: 'Neuer Benutzer', handler: edit_User }] }); return UsersGrid; } function Kontakt(){ var Kontaktcm = new Ext.grid.ColumnModel([{ header: "Parameter", dataIndex: 'Parameter', width: 200 }, { header: "Wert", dataIndex: 'Wert', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }]); Kontaktcm.defaultSortable = true; var storeKontakt = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kontakt' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'Parameter' }, { name: 'Wert' }, { name: 'S_PG_Key' }, { name: 'S_P_Key' }]) }); var KontaktGrid = new Ext.grid.EditorGridPanel({ store: storeKontakt, cm: Kontaktcm, title: 'Kontakt', stripeRows: true, clicksToEdit: 1, tbar: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ var jsonData = "["; var l = storeKontakt.getCount(); for (i = 0; i < l; i++) { record = storeKontakt.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ waitMsg: 'Die Änderungen werden gespeichert, bitte warten!', url: 'io.php?type=grid', params: { data: jsonData, key: 'S_PG_Key,S_P_Key', table: 's_parameter' }, success: function(form, action){ storeKontakt.load(); Ext.MessageBox.alert('Success', 'Die Datenbank wurde aktualisiert'); } }); } }] }); KontaktGrid.on('render', function(){ KontaktGrid.store.load(); }); return KontaktGrid; } function Planung(){ var Planungcm = new Ext.grid.ColumnModel([{ header: "Parameter", dataIndex: 'Parameter', width: 200 }, { header: "Wert", dataIndex: 'Wert', width: 200, editor: new Ext.form.NumberField({ allowBlank: false, decimalSeparator: '.', allowDecimals: false }) }]); Planungcm.defaultSortable = true; var storePlanung = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=planung' }), async: false, reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'Parameter' }, { name: 'Wert' }, { name: 'S_PG_Key' }, { name: 'S_P_Key' }]) }); var PlanungGrid = new Ext.grid.EditorGridPanel({ store: storePlanung, cm: Planungcm, title: 'Planung', stripeRows: true, clicksToEdit: 1, tbar: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ var jsonData = "["; var l = storePlanung.getCount(); for (i = 0; i < l; i++) { record = storePlanung.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ waitMsg: 'Die Änderungen werden gespeichert, bitte warten!', url: 'io.php?type=grid', params: { data: jsonData, key: 'S_PG_Key,S_P_Key', table: 's_parameter' }, success: function(form, action){ storePlanung.load(); Ext.MessageBox.alert('Success', 'Die Datenbank wurde aktualisiert'); } }); } }] }); PlanungGrid.on('render', function(){ PlanungGrid.store.load(); }); return PlanungGrid; } function Kontengruppen(){ function Edit_Gruppe(selectedId){ var KontoName_edit = new Ext.form.TextField({ fieldLabel: 'Name', name: 'KontoName', anchor: '90%', allowBlank: false }); var KNR_edit = new Ext.form.NumberField({ fieldLabel: 'KGNR', name: 'KGNR', allowBlank: false, decimalSeparator: '.' }); if (selectedId !== 1) { KNR_edit.disable(); } var formPanel_Konto = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=kontengruppen&id=' + selectedId, reader: new Ext.data.JsonReader({ root: 'data', id: 'KGNR' }, ['KGNR', 'KontoName']), items: [KNR_edit, KontoName_edit] }); formPanel_Konto.load({ waitMsg: 'Daten werden geladen...' }); var win_edit = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Konto Bearbeiten', closeAction: 'destroy', width: 500, height: 250, plain: true, items: [formPanel_Konto], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (formPanel_Konto.form.isValid()) { Ext.Ajax.request({ url: 'io.php', params: { id: KNR_edit.getValue(), field: 'KGNR', KontoName: KontoName_edit.getValue(), table: 'fs_kontengruppen' }, waitMsg: 'Die Daten werden gespreichert...', success: function(form, action){ win_edit.destroy(); InfoMessage("Die Daten wurden gespeichert"); storeKontengruppen.reload(); } }); } else { Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Pflichtfelder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }] }); win_edit.show(); } var Kontengruppencm = new Ext.grid.ColumnModel([{ id: 'Reihenfolge', header: "KGNR", align: 'right', dataIndex: 'KGNR', width: 20 }, { header: 'Kontengruppe', dataIndex: 'KontoName', width: 200 }]); Kontengruppencm.defaultSortable = true; var storeKontengruppen = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kontengruppen', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Reihenfolge', totalProperty: 'total' }, [{ name: 'Reihenfolge' }, { name: 'KGNR' }, { name: 'KontoName' }]) }); var KontengruppenGrid = new Ext.grid.EditorGridPanel({ store: storeKontengruppen, cm: Kontengruppencm, title: 'Kontengruppen', stripeRows: true, tbar: [{ text: 'Neu', iconCls: 'icon-plus', handler: function(){ Edit_Gruppe(1); } }], listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); Edit_Gruppe(record.get('KGNR')); } }, viewConfig: { forceFit: true } }); return KontengruppenGrid; } function Konten(){ function Edit_Konto(selectedId){ function KGDropDown(){ var storeKG_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kontengruppen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'KGNR' }, { name: 'KontoName' }, { name: 'Formel' }]) }); storeKG_dropdown.load(); var KG_dropdown = new Ext.form.ComboBox({ name: 'KGNR', editable: false, fieldLabel: 'Gruppe', typeAhead: false, triggerAction: 'all', store: storeKG_dropdown, displayField: 'KontoName', valueField: 'KGNR', anchor: '90%', allowBlank: false, renderer: function(v){ return storeKG_dropdown.data.items[v].data.KontoName; } }); return KG_dropdown; } var KontoName_edit = new Ext.form.TextField({ fieldLabel: 'Name', name: 'KontoName', anchor: '90%', allowBlank: false }); var KNR_edit = new Ext.form.NumberField({ fieldLabel: 'KNR', name: 'KNR', allowBlank: false, decimalSeparator: '.' }); var Formel_edit = new Ext.form.TextField({ fieldLabel: 'Formel', name: 'Formel', allowBlank: true, anchor: '90%' }); if (selectedId !== 1) { KNR_edit.disable(); } var KGDropDown_edit = KGDropDown(); var Farbe_edit = new Ext.form.ColorField({ fieldLabel: 'Farbe', colors: ['FFFFFF', 'EBF1E2', 'FFFF99', 'A68340', 'F0AE67', 'FF6000', 'CCC000'], name: 'Farbe' }); var formPanel_Konto = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=konten&id=' + selectedId, reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR' }, ['KNR', 'KontoName', 'KGNR', 'Formel', 'Farbe']), items: [KNR_edit, KontoName_edit, KGDropDown_edit, Formel_edit, Farbe_edit] }); formPanel_Konto.load({ waitMsg: 'Daten werden geladen...' }); var win_edit = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Konto Bearbeiten', closeAction: 'destroy', width: 500, height: 250, plain: true, items: [formPanel_Konto], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (formPanel_Konto.form.isValid()) { Ext.Ajax.request({ async: false, url: 'io.php', params: { id: formPanel_Konto.getForm().findField('KNR').getValue(), field: 'KNR', KGNR: KGDropDown_edit.getValue(), KontoName: KontoName_edit.getValue(), Formel: Formel_edit.getValue(), Farbe: Farbe_edit.getValue(), table: 'fs_konten', KNR: formPanel_Konto.getForm().findField('KNR').getValue() }, waitMsg: 'Die Daten werden gespreichert...', success: function(form, action){ win_edit.destroy(); InfoMessage("Die Daten wurden gespeichert"); KontenGrid.getView().holdPosition = true; KontenGrid.getStore().reload(); } }); } else { Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Pflichtfelder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }] }); win_edit.show(); } function set_konto(selectedId){ function KGDropDown(){ var storeKG_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kontengruppen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'KGNR' }, { name: 'KontoName' }, { name: 'Formel' }]) }); storeKG_dropdown.load(); var KG_dropdown = new Ext.form.ComboBox({ name: 'KGNR', editable: false, fieldLabel: 'Gruppe', typeAhead: false, triggerAction: 'all', store: storeKG_dropdown, displayField: 'KontoName', valueField: 'KGNR', anchor: '90%', allowBlank: false, renderer: function(v){ return storeKG_dropdown.data.items[v].data.KontoName; } }); return KG_dropdown; } var KNR_edit = new Ext.form.NumberField({ fieldLabel: 'KNR', name: 'KNR', allowBlank: false, decimalSeparator: '.' }); if (selectedId !== 1) { KNR_edit.disable(); } var KGDropDown_edit = KGDropDown(); var formPanel_Konto = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 100, labelSeparator: '', bodyStyle: 'padding:15px', url: 'api.php?a=list&t=konten&id=' + selectedId, reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR' }, ['KNR', 'KontoName', 'KGNR', 'Formel', 'Farbe']), items: [KNR_edit, KGDropDown_edit] }); formPanel_Konto.load({ waitMsg: 'Daten werden geladen...' }); var win_edit = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Konto zuordnen', closeAction: 'destroy', width: 500, height: 150, plain: true, items: [formPanel_Konto], buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ if (formPanel_Konto.form.isValid()) { Ext.Ajax.request({ async: false, url: 'io.php', params: { id: formPanel_Konto.getForm().findField('KNR').getValue(), field: 'KNR', KGNR: KGDropDown_edit.getValue(), //KontoName: KontoName_edit.getValue(), //Formel: Formel_edit.getValue(), //Farbe: Farbe_edit.getValue(), table: 'fs_konten', KNR: formPanel_Konto.getForm().findField('KNR').getValue() }, waitMsg: 'Die Daten werden gespreichert...', success: function(form, action){ win_edit.destroy(); InfoMessage("Die Daten wurden gespeichert"); storeKonten.reload(); } }); } else { Ext.MessageBox.alert('Fehler', 'Bitte, füllen Sie alle Pflichtfelder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function(){ win_edit.destroy(); } }] }); win_edit.show(); } var deleteKonto = function(grid, rec, action, row, col){ console.log(action); store = grid.getStore(); var Formel; store.each(function(record){ Formel = record.get('Formel'); if (Formel.indexOf(rec.get('KNR')) !== -1) { WarningMessage('Das Konto ' + rec.get('KontoName') + ' nimmt an der Formel ' + record.get('Formel') + ' teil und kann nicht gelöscht werden', 'Konten'); return false; } }); Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie ' + rec.get('KontoName') + ' zu der nicht zugeordneten Konten verschieben möchten?', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: function(btn){ if (btn == 'ok') { Ext.Ajax.request({ url: 'io.php', params: { id: rec.get('KNR'), field: 'KNR', table: 'fs_konten', KNR: rec.get('KNR'), KGNR: 99999 }, success: function(form, action){ InfoMessage('Das Konto ' + rec.get('KontoName') + ' wurde verschoben.'); store.remove(rec); storeKonten.reload(); } }); } } }); }; var action_delete = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: deleteKonto, iconIndex: 'icon' }], callbacks: { 'icon-plus': function(grid, records, action, row, col){ var record = grid.getStore().getAt(row); set_konto(record.data.KNR); } } }); var Kontencm = new Ext.grid.ColumnModel([{ id: 'KNR', header: "KNR", align: 'right', dataIndex: 'KNR', width: 40, sortable: false, menuDisabled: true }, { header: 'KGNR', dataIndex: 'KGNR', width: 40, hidden: true, sortable: false, menuDisabled: true }, { header: 'Gruppe', dataIndex: 'kgKontoName', width: 40, hidden: true, sortable: false, menuDisabled: true }, { header: 'Reihenfolge', dataIndex: 'Reihenfolge', width: 40, hidden: true, sortable: false, menuDisabled: true }, { header: 'Sign', dataIndex: 'Sign', width: 30, sortable: false, menuDisabled: true }, { header: 'Konto', dataIndex: 'KontoName', width: 200, sortable: false, menuDisabled: true }, { header: 'IKZ', dataIndex: 'IKZ', width: 50, sortable: false, menuDisabled: true }, { header: 'Formel', dataIndex: 'Formel', width: 100, sortable: false, menuDisabled: true }, action_delete]); Kontencm.defaultSortable = true; mView = new Ext.grid.GroupingView({ groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Konten" : "Konto"]})', forceFit: true, getRowClass: function(row, index){ if (row.get('Farbe')) { return 'row_class_' + row.get('Farbe'); } } }); var storeKonten = new Ext.data.GroupingStore({ groupField: 'kgKontoName', sortInfo: { field: 'Reihenfolge', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=konten', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR', totalProperty: 'total' }, [{ name: 'KNR' }, { name: 'Reihenfolge' }, { name: 'KGNR' }, { name: 'kgKontoName' }, { name: 'Sign' }, { name: 'KontoName' }, { name: 'IKZ' }, { name: 'Formel' }, { name: 'icon' }, { name: 'Farbe' }]) }); var KontenGrid = new oc.Grid({ listeners: { rowdblclick: function(grid, rowIndex){ var record = grid.getStore().getAt(rowIndex); Edit_Konto(record.data.KNR); } }, store: storeKonten, cm: Kontencm, title: 'Konten', view: mView, border: false, plugins: [action_delete], tbar: [{ text: 'Neu', iconCls: 'icon-plus', handler: function(){ Edit_Konto(1); } }] }); return KontenGrid; } function Verteilungsarten(){ var Verteilungsartencm = new Ext.grid.ColumnModel([{ id: 'Verteilung', header: "Nr", align: 'right', dataIndex: 'Verteilung', width: 20 }, { header: 'Bezeichnung', dataIndex: 'Bezeichnung', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }]); Verteilungsartencm.defaultSortable = true; var storeVerteilungsarten = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=verteilungsarten', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Verteilung', totalProperty: 'total' }, [{ name: 'Verteilung' }, { name: 'Bezeichnung' }]) }); var VerteilungsartenGrid = new Ext.grid.EditorGridPanel({ store: storeVerteilungsarten, cm: Verteilungsartencm, title: 'Verteilungsarten', stripeRows: true, height: 500 }); return VerteilungsartenGrid; } function PSD(){ var PSDcm = new Ext.grid.ColumnModel([{ id: 'PKNR', header: "Nr", align: 'right', dataIndex: 'PKNR', width: 20 }, { header: 'Kosten', dataIndex: 'Kosten', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }]); PSDcm.defaultSortable = true; var storePSD = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=psd', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PKNR', totalProperty: 'total' }, [{ name: 'PKNR' }, { name: 'Kosten' }]) }); var PSDGrid = new Ext.grid.EditorGridPanel({ store: storePSD, cm: PSDcm, stripeRows: true, title: 'Personal Sonstige Kostenarten', tbar: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ var jsonData = "["; var l = storePSD.getCount(); for (i = 0; i < l; i++) { record = storePSD.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ waitMsg: 'Die Änderungen werden gespeichert, bitte warten!', url: 'io.php?type=grid', params: { data: jsonData, key: 'PKNR', table: 'psd_kostenarten' }, success: function(form, action){ storePSD.load(); Ext.MessageBox.alert('Success', 'Die Datenbank wurde aktualisiert'); } }); } }] }); return PSDGrid; } function KalkulationsKonten(){ var Anzeigen = new Ext.grid.CheckColumn({ id: 'Anzeigen', header: 'Anzeigen', dataIndex: 'Anzeigen', width: 55 }); var Eingabe = new Ext.grid.CheckColumn({ id: 'Eingabe', header: 'Eingabe', dataIndex: 'Eingabe', width: 55 }); arrayColumn = []; arrayColumn.push(['-1', 'Negativ']); arrayColumn.push(['1', 'Positiv']); arrayColumn.push(['100', 'Prozent']); comboboxStore = new Ext.data.SimpleStore({ fields: ['id', 'display'], data: arrayColumn }); function rendProzent(v){ switch (v) { case '-1': return 'Negativ'; case '1': return 'Positiv'; case '100': return 'Prozent'; } } var KalkulationsKontencm = new Ext.grid.ColumnModel([{ id: 'KNR', header: "KNR", dataIndex: 'KNR' }, { header: 'Kontoname', dataIndex: 'KontoName', editor: new Ext.form.TextField({ allowBlank: false }), width: 200 }, { header: 'Formel', dataIndex: 'Formel', editor: new Ext.form.TextField({ allowBlank: false }) }, { header: 'Sign', dataIndex: 'Sign', editor: new Ext.form.TextField({ allowBlank: true }) }, { header: 'EOA', dataIndex: 'EOA', renderer: rendProzent, editor: new Ext.form.ComboBox({ store: comboboxStore, mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false }) }, Eingabe, Anzeigen]); KalkulationsKontencm.defaultSortable = true; var storeKalkulationsKonten = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_konten', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR', totalProperty: 'total' }, [{ name: 'KNR' }, { name: 'KontoName' }, { name: 'Sign' }, { name: 'Formel' }, { name: 'EOA' }, { name: 'Eingabe', type: 'bool' }, { name: 'Anzeigen', type: 'bool' }]) }); var KalkulationsKontenGrid = new Ext.grid.EditorGridPanel({ store: storeKalkulationsKonten, cm: KalkulationsKontencm, stripeRows: true, title: 'Kalkulationskonten', height: 700, plugins: [Anzeigen, Eingabe] }); //-- Public Events.START storeKalkulationsKonten.on("update", function(storeKalkulationsKonten, record, action){ if (record.dirty) { var jsonData = "["; jsonData += Ext.util.JSON.encode(record.data) + ","; jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'KNR', table: 'k_konten' }, success: function(form, action){ storeKalkulationsKonten.commitChanges(); } }); } }); //-- Public Events.END return KalkulationsKontenGrid; } function Fehlzeiten(){ var Fehlzeitencm = new Ext.grid.ColumnModel([{ id: 'FZNR', header: "Nr", align: 'right', dataIndex: 'FZNR', width: 20 }, { header: 'Fehlzeit', dataIndex: 'Fehlzeit', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }, { header: 'Voreinstellung', dataIndex: 'Default_1', align: 'right', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }]); Fehlzeitencm.defaultSortable = true; var storeFehlzeiten = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=fehlzeiten', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'FZNR', totalProperty: 'total' }, [{ name: 'FZNR' }, { name: 'Fehlzeit' }, { name: 'Default_1' }]) }); var FehlzeitenGrid = new Ext.grid.EditorGridPanel({ store: storeFehlzeiten, cm: Fehlzeitencm, stripeRows: true, title: 'Personal Fehlzeitenarten', tbar: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ var jsonData = "["; var l = storeFehlzeiten.getCount(); for (i = 0; i < l; i++) { record = storeFehlzeiten.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ waitMsg: 'Die Änderungen werden gespeichert, bitte warten!', url: 'io.php?type=grid', params: { data: jsonData, key: 'FZNR', table: 'psd_fehlzeitarten' }, success: function(form, action){ storeFehlzeiten.load(); Ext.MessageBox.alert('Info', 'Die Datenbank wurde aktualisiert'); } }); } }] }); return FehlzeitenGrid; } function Sonstiges(){ var Sonstigescm = new Ext.grid.ColumnModel([{ id: 'Parameter', header: "Parameter", dataIndex: 'Parameter', width: 280 }, { header: 'Wert', dataIndex: 'Wert', align: 'right', width: 100, editor: new Ext.form.TextField({ allowBlank: false }) }]); Sonstigescm.defaultSortable = false; var storeSonstiges = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=sonstiges', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'Parameter', totalProperty: 'total' }, [{ name: 'Parameter' }, { name: 'S_PG_Key' }, { name: 'S_P_Key' }, { name: 'Wert' }]) }); var SonstigesGrid = new Ext.grid.EditorGridPanel({ store: storeSonstiges, cm: Sonstigescm, title: 'Sonstiges', stripeRows: true, tbar: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function(){ var jsonData = "["; var l = storeSonstiges.getCount(); for (i = 0; i < l; i++) { record = storeSonstiges.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'S_PG_Key,S_P_Key', table: 's_parameter' }, success: function(form, action){ WarningMessage('Bitte starten Sie die Anwendung neu um die neue Einstellugen zu laden', 'Die Änderungen wurden gespeichert'); storeSonstiges.commitChanges(); } }); } }] }); //-- Public Events.START /* storeSonstiges.on("update", function(storeSonstiges, record, action){ if (record.dirty) { var jsonData = "["; jsonData += Ext.util.JSON.encode(record.data) + ","; jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'S_PG_Key,S_P_Key', table: 's_parameter' }, success: function(form, action){ storeSonstiges.commitChanges(); } }); } }); */ //-- Public Events.END return SonstigesGrid; } KontengruppenGrid = Kontengruppen(); KontenGrid = Konten(); VerteilungsartenGrid = Verteilungsarten(); PSDGrid = PSD(); FehlzeitenGrid = Fehlzeiten(); SonstigesGrid = Sonstiges(); KakulationsKontentGrid = KalkulationsKonten(); PlanungGrid = Planung(); KontaktGrid = Kontakt(); UsersGrid = Users(); ProfitCenter = profitCenter(); UsersGrid.on('render', function(){ UsersGrid.store.load(); }); KontengruppenGrid.on('render', function(){ KontengruppenGrid.store.load(); }); KontenGrid.on('render', function(){ KontenGrid.store.load(); }); VerteilungsartenGrid.on('render', function(){ VerteilungsartenGrid.store.load(); }); PSDGrid.on('render', function(){ PSDGrid.store.load(); }); FehlzeitenGrid.on('render', function(){ FehlzeitenGrid.store.load(); }); SonstigesGrid.on('render', function(){ SonstigesGrid.store.load(); }); KakulationsKontentGrid.on('render', function(){ KakulationsKontentGrid.store.load(); }); var FirmendatenTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [ProfitCenter, KontaktGrid, PlanungGrid, UsersGrid] }); var KontenTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [KontengruppenGrid, KontenGrid, KakulationsKontentGrid] }); var PersonalTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [PSDGrid, FehlzeitenGrid] }); var SonstigesTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [SonstigesGrid] }); var a = new Ext.Panel({ title: 'Firmendaten', iconCls: 'icon-prefs', collapsible: true, layout: 'fit', border: false, items: FirmendatenTabs }); var b = new Ext.Panel({ title: 'Konten', iconCls: 'icon-coins', collapsible: true, border: false, items: KontenTabs, layout: 'fit' }); var c = new Ext.Panel({ title: 'Personal', iconCls: 'icon-user-suit', border: false, collapsible: true, layout: 'fit', items: PersonalTabs }); var d = new Ext.Panel({ title: 'Sonstiges', iconCls: 'icon-wrench-orange', collapsible: true, border: false, layout: 'fit', items: SonstigesTabs }); //myBackup = new Backup(); //var backupGrid = myBackup.returnGrid(); /* backupGrid.on('renderer', function() { console.info('backupGrid'); backupGrid.store.load(); }); */ /* var e = new Ext.Panel({ listeners: { expand: function() { //backupGrid.store.load(); } }, title: 'Datenbank', iconCls: 'icon-db-gear', collapsible: true, border: false, layout: 'fit' , items: backupGrid }); */ var p = new Ext.Panel({ id: 'Parameter-panel', iconCls: 'icon-wrench-orange', title: 'Einstellungen', layout: 'accordion', border: false, height: 700, items: [a, b, c, d /* , e */ ] }); return { returnGrid: function(){ return p; } }; }; oc.ErgebnissePanel = function(item){ nav_cookie_ergebnisse.set("current_year", plan_current); nav_cookie_ergebnisse.set("plan_monat", plan_monat); /* console.log('current_year =' + plan_current); console.log('plan_monat =' + plan_monat); console.log('plan_monat_hochrechnung = ' + plan_monat_calhochrechnung); */ var arrayColumn = []; var edit_month_value = 1; for (monat = 0; monat < 12; monat++) { arrayColumn.push([(monat + 1), Date.getShortMonthName(monat)]); } var comboboxStore = new Ext.data.SimpleStore({ fields: ['id', 'display'], data: arrayColumn }); arrayColumn.push([13, 'JAB']); arrayColumn.push(['PlanGuV', 'Plan']); var comboboxStore_edit_moth = new Ext.data.SimpleStore({ fields: ['id', 'display'], data: arrayColumn }); var gridViewBWA = new Ext.ux.grid.LockingGridView({ getRowClass: function(row, index){ //console.log('getRowClass'); if (nav_cookie_ergebnisse.get("details") !== "1") { if (!row.get('Formel')) { return 'hide'; } } if (row.get('Farbe')) { return 'row_class_' + row.get('Farbe'); } } }); var storeProfitCenter_dropdown = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=anlagen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo){ this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var storeYear_dropdown = new Ext.xStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=ergebnisse' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ name: 'Year', typeAhead: false, editable: false, store: storeYear_dropdown, displayField: 'title', valueField: 'id', forceSelection: true, listeners: { render: function(){ this.getStore().load({ callback: function(store){ rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, beforequery: function(combo){ this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; } } }); function GUV(){ function gridViewGUV(){ var ViewGUV = new Ext.grid.GridView({ getRowClass: function(row, index){ if (row.get('Farbe')) { return 'row_class_' + row.get('Farbe'); } } }); return ViewGUV; } var storeGUV = new Ext.xStore({ listeners: { load: function(store){ Ext.Ajax.request({ url: 'y.php?cm=1', method: 'POST', params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") }, success: function(response){ var cm = new Ext.grid.ColumnModel({ columns: eval(response.responseText) }); GUVGrid.reconfigure(GUVGrid.getStore(), cm); } }); } }, proxy: new Ext.data.HttpProxy({ url: 'y.php' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR', totalProperty: 'total' }, [{ name: 'KNR' }, { name: 'Sign' }, { name: 'Farbe' }, { name: 'KontoName' }, { name: 'Formel' }, { name: 'EOA' }, { name: 'y_1', type: 'float' }, { name: 'y_2', type: 'float' }, { name: 'y_3', type: 'float' }, { name: 'y_4', type: 'float' }, { name: 'y_5', type: 'float' }, { name: 'y_6', type: 'float' }]) }); var GUVGridcm = new Ext.grid.ColumnModel([{ id: 'KNR', header: "KNR", dataIndex: 'KNR', width: 200 }]); GUVGridcm.defaultSortable = false; var GUVGrid = new Ext.grid.EditorGridPanel({ view: gridViewGUV(), clicksToEdit: 1, title: 'GUV', loadMask: true, store: storeGUV, cm: GUVGridcm, stripeRows: true, layout: 'fit', height: 'auto', sortable: false, header: false, border: false }); return GUVGrid; } function Save(){ // check if there is something to be saved ! if (isStoreDirty(BWAGrid.store)) { var function_params = []; BWAGrid.getEl().mask(); InfoMessage('Speichern ...', 'Bitte warten'); var jsonData = "["; for (i = 0; i < BWAGrid.store.getCount(); i++) { record = BWAGrid.store.getAt(i); //function_params.push(String(record.data.KNR)); if (record.dirty) { if (!record.data.Formel) { function_params.push(String(record.data.KNR)); } var data = record.getChanges(); data.KNR = record.data.KNR; data.PCNR = String(nav_cookie_ergebnisse.get("current_profitcenter")); data.Jahr = nav_cookie_ergebnisse.get("current_year"); jsonData += Ext.util.JSON.encode(data) + ","; } } var json_function_params = Ext.util.JSON.encode(function_params); jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'KNR,Jahr,PCNR', table: 'bwa', execute: 'erg_calculate', function_params: json_function_params, year: nav_cookie_ergebnisse.get("current_year"), ErsterMonatHoRe: plan_monat }, success: function(result, request){ var res = Ext.util.JSON.decode(result.responseText); if (res.success == false) { xErrorMessage({ title: 'Server Error! (save Ergebnisse)', text: res.errorInfo || result.responseText }); } else { BWAGrid.getEl().unmask(); InfoMessage('Die Daten wurden gespeichert', 'BWA'); BWAGrid.store.commitChanges(); InfoMessage('Alle PC neukalkulieren ...', 'BWA'); } }, requestexception: function(){ alert('ERROR'); } }); } else { InfoMessage('Nichts zum Speichern!'); //return false; } } // return EditGrid function BWA(){ //Ext.Editor Ext.ErgNumbField = Ext.extend(Ext.form.NumberField, { decimalSeparator: ',', selectOnFocus: true, decimalPrecision: 2, listeners: { show: function(field, e){ field.focus(true); } } }); function BWAcm(){ var bwacm = new Ext.ux.grid.LockingColumnModel({ defaults: { menuDisabled: true }, columns: [{ id: 'KNR', header: "KNR", dataIndex: 'KNR', locked: true, menuDisabled: true }, { id: 'KontoName', header: "Konto", dataIndex: 'KontoName', width: 200, locked: true, menuDisabled: true }, { id: 'GuV', header: "GuV " + nav_cookie_ergebnisse.get("current_year"), dataIndex: 'GuV', align: 'right', renderer: function(v){ return Ext.util.Format.deMoney_erg(v); }, menuDisabled: true }, { id: 'PlanGuV', header: "Plan " + nav_cookie_ergebnisse.get("current_year"), dataIndex: 'PlanGuV', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField({ allowBlank: true }), menuDisabled: true }, { id: '13', header: "JAB " + nav_cookie_ergebnisse.get("current_year"), dataIndex: '13', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField({ allowBlank: true }), menuDisabled: true }, { id: 'HoRe', header: "HoRe " + nav_cookie_ergebnisse.get("current_year"), dataIndex: 'HoRe', align: 'right', renderer: function(v){ return Ext.util.Format.deMoney_erg(v); }, menuDisabled: true }, { id: 'IstBWA', header: "Summe " + nav_cookie_ergebnisse.get("current_year"), dataIndex: 'IstBWA', align: 'right', renderer: function(v){ return Ext.util.Format.deMoney_erg(v); }, menuDisabled: true }, { id: 'dif', header: "dif (%) " + nav_cookie_ergebnisse.get("current_year"), dataIndex: 'Dif', align: 'right', renderer: function(v){ if ((v) && (Number(v) !== 0)) { return Ext.util.Format.realpercents(v); } }, menuDisabled: true }, { id: '1', header: "Jan.", dataIndex: '1', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '2', header: "Feb.", dataIndex: '2', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '3', header: "Mär.", dataIndex: '3', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '4', header: "Apr.", dataIndex: '4', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '5', header: "Mai.", dataIndex: '5', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '6', header: "Jun.", dataIndex: '6', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '7', header: "Jul.", dataIndex: '7', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '8', header: "Aug.", dataIndex: '8', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '9', header: "Sep.", dataIndex: '9', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '10', header: "Okt.", dataIndex: '10', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '11', header: "Nov.", dataIndex: '11', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }, { id: '12', header: "Dez.", dataIndex: '12', align: 'right', renderer: erg_renderer, editor: new Ext.ErgNumbField(), menuDisabled: true }], defaultSortable: false, isCellEditable: function(colIndex, rowIndex){ var record = storeBWA.getAt(rowIndex); var dataIndex = BWAGrid.getColumnModel().getDataIndex(colIndex); edit_month_value = edit_month.getValue() ? edit_month.getValue() : 1; if ((dataIndex) == edit_month_value) { //alert('fire free'); } else { return false; } if (record.data.Formel !== '') { return false; } if (nav_cookie_ergebnisse.get("current_profitcenter") == 0) { if ((record.data.Verteilung == 0) || (record.data.Verteilung == "")) { return false; } else { if ((Number(dataIndex) >= Number(record.data.Von_monat)) && (Number(dataIndex) <= Number(record.data.Bis_monat))) { } else { if ((dataIndex !== 'PlanGuV') && (dataIndex !== '13')) { return false; } } } } else { if ((record.data.Verteilung == 2) || (record.data.Verteilung == 1)) { if ((Number(dataIndex) >= Number(record.data.Von_monat)) && (Number(dataIndex) <= Number(record.data.Bis_monat))) { return false; } } } return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, colIndex, rowIndex); } }); // BWAcm.; return bwacm; } var edit_month = new Ext.form.ComboBox({ store: comboboxStore_edit_moth, mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false, //emptyText: Date.getShortMonthName(0), value: 1, listeners: { collapse: function(combo){ BWAGrid.reconfigure(BWAGrid.store, BWAcm()); hlColumn(combo.getValue()); edit_month_value = combo.getValue(); } } }); /* calc_bis.on('collapse', function(combo){ if (Number(plan_current) > Number(Year_dropdown.getValue())) { } else { } }); */ function hlColumn(index){ var columnindex = BWAGrid.getColumnModel().findColumnIndex(index); var header = BWAGrid.getColumnModel().getColumnHeader(columnindex); BWAGrid.getColumnModel().setColumnHeader(columnindex, ' ' + header + ' '); } var erg_renderer = function(value, metaData, record, rowIndex, colIndex, store){ if (Number(edit_month_value) == 13) { columnIndex = 4; } else if (edit_month_value == 'PlanGuV') { columnIndex = 3; } else { columnIndex = edit_month_value + 7; } if (BWAGrid.getColumnModel().isCellEditable(columnIndex, rowIndex)) { //console.info('isGreen ' + columnIndex + ' : ' + rowIndex); if (colIndex == columnIndex) { metaData.css = 'greenrow_editable'; } else { metaData.css = 'greenrow'; } } else { if (record.get('Farbe')) { metaData.css = 'row_class_' + record.get('Farbe'); //console.info } else { metaData.css = 'pinkrow'; } } //} return Ext.util.Format.deMoney_erg(value); }; var storeBWA = new Ext.xStore({ pruneModifiedRecords: true, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=guv' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR', totalProperty: 'total' }, [{ name: 'KNR' }, { name: 'KGNR' }, { name: 'Sign' }, { name: 'Farbe' }, { name: 'KontoName' }, { name: 'IstBWA', type: 'float' }, { name: 'HoRe', type: 'float' }, { name: 'IstGuV' }, { name: 'PlanGuV', type: 'int' }, { name: 'GuV', type: 'float' }, { name: 'Dif' }, { name: '1', type: 'float' }, { name: '2', type: 'float' }, { name: '3', type: 'float' }, { name: '4', type: 'float' }, { name: '5', type: 'float' }, { name: '6', type: 'float' }, { name: '7', type: 'float' }, { name: '8', type: 'float' }, { name: '9', type: 'float' }, { name: '10', type: 'float' }, { name: '11', type: 'float' }, { name: '12', type: 'float' }, { name: '13', type: 'float' }, { name: 'Verteilung' }, { name: 'Bis_monat' }, { name: 'Von_monat' }, { name: 'Formel' }]) }); function calculateAll(e, force){ //console.log('calculateAll'); if (e) { rowIndex = e.row; } else { rowIndex = false; } var dif_array = Array(90200, 90300, 90400, 48200, 99700, 99900, 90100); var umsatz = storeBWA.getById(90100).get('IstBWA'); var active_fields = Array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', 'IstBWA', 'HoRe', 'IstGuV', 'PlanGuV'); function Summe(kgnr){ var sum = 0; storeBWA.each(function(record){ if ((record.data.KGNR == kgnr) && (!record.data.Formel)) { sum += Math.round(record.get(String(field))); } }, this); return Number(sum); } function Betrag(knr){ record = storeBWA.getById(knr); return Math.round(record.get(String(field))); } function ExecuteFormel(rowIndex){ //console.log(rowIndex); if (rowIndex == 'GuV') { return false; } start = 0; if (rowIndex) { start = rowIndex; } for (i = start; i < storeBWA.getCount(); i++) { var record = storeBWA.getAt(i); if (record.get('Formel')) { var new_value = Number(eval(record.data.Formel)); if (isNaN(new_value)) { new_value = 0; } if (Math.round(Number(record.get(String(field)))) !== Math.round(new_value)) { if (isNaN(record.get(String(field))) && (new_value == 0)) { // do nothing } else { record.set(String(field), Math.round(new_value)); } } Dif(record); } } } function SumRow(row, update_field){ var sum = 0; var record = storeBWA.getAt(row); if (Number(plan_current) > nav_cookie_ergebnisse.get('current_year')) { calc_month = 12; } else { calc_month = plan_monat; //console.log(plan_monat); } switch (update_field) { case 'IstBWA': // Summe = SUM(von Jan bis Dezember) for (i = 1; i <= 12; i++) { sum += Math.round(record.get(String(i))); } break; case 'GuV': // JAB > 0 => GuV = JAB if (Number(record.get('13')) !== 0) { //console.log('JAB > 0 => GuV = JAB'); sum = record.get('13'); break; } //console.log(); //console.info('Planmonat= ' + calc_month + ' Planmonat Hochrechnung= '+ plan_monat_hochrechnung); // Planmonat < Planmonat Hochrechnung => GuV = PlanGuV if (Number(calc_month) < Number(plan_monat_hochrechnung)) { //console.log('Planmonat < Planmonat Hochrechnung => GuV = PlanGuV') sum = Math.round(record.get('PlanGuV')); } // Planmonat > Planmonat Hochrechnung => GuV = (SUM(Jan-Planmonat)/Planmonat)*12 else { //console.log('Planmonat > Planmonat Hochrechnung => GuV = (SUM(Jan-Planmonat)/Planmonat)*12'); for (i = 1; i <= Number(calc_month); i++) { sum += Math.round(record.get(String(i))); } sum = Math.round((sum / calc_month) * 12); } // GuV = 0 => GuV = PlanGuV if ((Number(sum) == 0 && Number(record.get('PlanGuV')) !== 0)) { //console.log('GuV = 0 => GuV = PlanGuV'); sum = Math.round(record.get('PlanGuV')); } // control fix for old access records.start /* if ((!sum) && (Number(record.get('GuV')) > 0)) { //console.log('control fix for old access records'); sum = record.get('GuV'); } */ // control fix for old access records.end break; case 'HoRe': // HoRe = SUM(von Jan bis Planmonat)/Planmonat*12 for (i = 1; i <= Number(calc_month); i++) { sum += Math.round(record.get(String(i))); } sum = Math.round((sum / calc_month) * 12); break; } sum = Math.round(sum); if (isNaN(sum)) { sum = 0; } if (Math.round(Number(record.get(String(update_field)))) !== Number(sum)) { //alert(Math.round(Number(record.get(String(update_field))))); if (isNaN(record.get(String(update_field))) && (sum == 0)) { // do nothing } else { record.set(String(update_field), Math.round(sum)); //calculateAll(); } } } function Dif(record){ if (dif_array.contains(Number(record.get('KNR')))) { //console.log('record.get(IstBWA): ' + record.get('IstBWA')); //console.log((record.get('IstBWA') / umsatz) * 100); //if (Math.round(record.get('Dif')) !== Math.round((record.get('IstBWA') / umsatz) * 100) && (record.get('KNR') !== 90100)) { if (Number(record.get('Dif')).toFixed(2) !== Number((record.get('IstBWA') / umsatz) * 100).toFixed(2) && (record.get('KNR') !== 90100)) { //console.log(record.get('KNR')); record.set('Dif', (record.get('IstBWA') / umsatz) * 100); } } else { //record.set('Dif', null); } } function Dif_row(row){ record = storeBWA.getAt(row); Dif(record); } //BWAGrid.store.commitChanges(); for (var column = 0; column < active_fields.length; column++) { field = active_fields[column]; ExecuteFormel(rowIndex); } if (isStoreDirty(storeBWA) || force) { start = 0; if (rowIndex) { start = rowIndex; } else { InfoMessage('BWA wird neukalkuliert ...'); } for (row = start; row < storeBWA.getCount(); row++) { SumRow(row, 'HoRe'); SumRow(row, 'IstBWA'); SumRow(row, 'GuV'); Dif_row(row); } } //console.info('reconfigure'); BWAGrid.reconfigure(storeBWA, BWAcm()); } var calc_bis = new Ext.form.ComboBox({ store: comboboxStore, id: 'calc_bis', mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false, emptyText: Date.getShortMonthName(Number(plan_monat) - 1), listeners: { collapse: function(combo){ plan_monat = combo.getValue(); calculateAll(false, true); } } }); var selModel = new Ext.grid.CheckboxSelectionModel(); selModel.locked = true; var BWAGrid = new Ext.grid.EditorGridPanel({ id: 'bwaGrid', view: gridViewBWA, clicksToEdit: 1, title: 'BWA', stripeRows: true, store: storeBWA, cm: BWAcm(), //sm:selModel, sortable: false, header: false, border: false, loadMask: true, tbar: ['Erster Monat Hochrechnung : (' + plan_monat_hochrechnung + '.) ' + Date.getShortMonthName(Number(plan_monat_hochrechnung) - 1), '-', 'Planmonat : (' + plan_monat + '.) ' + Date.getShortMonthName(Number(plan_monat) - 1), '->', 'Daten bearbeiten in ', edit_month, { text: ' Speichern ', iconCls: 'icon-save-table', handler: function(){ Save(); } }, '-', { text: ' Zurücksetzen ', iconCls: 'icon-cross', handler: function(){ storeBWA.rejectChanges(); } }, { text: 'MS Excel', iconCls: 'icon-excel', handler: function(){ submitQuery(BWAGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function(){ submitQuery(BWAGrid, 'print'); } }/*, { text: 'test', handler: function(){ BWAGrid.reconfigure(BWAGrid.store, BWAcm()); hlColumn(edit_month.getValue()); edit_month_value = edit_month.getValue(); } }*/] }); // -- Public Events.START BWAGrid.on("afteredit", function(e){ //console.info('afteredit'); calculateAll(e); }); /* BWAGrid.on('reconfigure', function(){ console.info('BWAGrid.onReconfigure'); }); */ BWAGrid.store.on("load", function(){ calculateAll(false, true); /* if (!edit_month.getValue()) { hlColumn('1'); } */ if (isStoreDirty(BWAGrid.store)) { Save(); } }); // -- Public Events.END return BWAGrid; } // return Grid function Zuordnungen(selectedId){ function Save(){ var count = ZuordnungenGrid.store.getModifiedRecords(); if (count[0]) { //InfoMessage(''); ZuordnungenGrid.getEl().mask('Die Daten wurden gespeichert'); var function_params = []; var jsonData = "["; for (i = 0; i < ZuordnungenGrid.store.getCount(); i++) { record = ZuordnungenGrid.store.getAt(i); //if (record.dirty) { function_params.push(String(record.data.KNR)); if (record.data.Von_monat == '') { record.data.Von_monat = 1; } if (record.data.Bis_monat == '') { record.data.Bis_monat = 12; } record.data.Jahr = nav_cookie_ergebnisse.get("current_year"); jsonData += Ext.util.JSON.encode(record.data) + ","; //} } var json_function_params = Ext.util.JSON.encode(function_params); jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid', params: { data: jsonData, key: 'KNR,Jahr', table: 'tbl_k_verteilungen', execute: 'erg_calculate', function_params: json_function_params, year: nav_cookie_ergebnisse.get("current_year") }, success: function(result, request){ var result = Ext.util.JSON.decode(result.responseText); if (result.success == true) { ZuordnungenGrid.getEl().unmask(); ZuordnungenGrid.getStore().reload(); BWAGrid.getStore().reload(); GUVGrid.getStore().reload(); } else { xErrorMessage({ title: 'Server Error! (save Zuordnungen)', text: result.errorInfo || result.responseText }); } } }); } } var ZuordnungenGrid = new oc.zGrid({ ztype: 'erg' }); ZuordnungenGrid.on('save', function(){ Save(); }); return ZuordnungenGrid; } var GUVGrid = GUV(); var BWAGrid = BWA(); var ZuordnungenGrid = Zuordnungen(); var ErgebnisseTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [BWAGrid, GUVGrid, ZuordnungenGrid] }); var ErgebnissePanel = new Ext.Panel({ title: 'Ergebnisse', iconCls: 'icon-pencil', id: 'Ergebnisse-panel', tbar: ['ProfitCenter : ', ' ', ProfitCenter_dropdown, ' ', 'Jahr : ', ' ', Year_dropdown, ' ', { text: 'Details Ein', iconCls: 'icon-magnifier', handler: function(){ if (this.getText() == 'Details Ein') { nav_cookie_ergebnisse.set("details", "1"); this.addClass("x-btn-pressed"); this.setText('Details Aus'); } else { nav_cookie_ergebnisse.set("details", "0"); this.removeClass("x-btn-pressed"); this.setText('Details Ein'); } //BWAGrid.reconfigure(BWAGrid.store, BWAcm()); BWAGrid.reconfigure(BWAGrid.store, BWAGrid.getColumnModel()); GUVGrid.reconfigure(GUVGrid.store, GUVGrid.getColumnModel()); } }], collapsible: false, border: false, layout: 'fit', items: [ErgebnisseTabs] }); //-------- PUBLIC EVENTS.START ----------- Year_dropdown.on('collapse', function(combo){ function showResult(btn){ switch (btn) { case 'yes': combo.setValue(nav_cookie_ergebnisse.get("current_year")); Save(); break; case 'no': BWAGrid.store.load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") } }); ZuordnungenGrid.store.load({ params: { year: nav_cookie_ergebnisse.get("current_year") } }); break; default: combo.setValue(nav_cookie_ergebnisse.get("current_year")); return false; } } if (Number(combo.getValue()) !== Number(nav_cookie_ergebnisse.get("current_year"))) { nav_cookie_ergebnisse.set("current_year", Number(combo.getValue())); if (isStoreDirty(BWAGrid.store)) { Ext.MessageBox.show({ title: 'BWA', msg: 'Wollen Sie zuerst die letze Änderungen speichern ?', buttons: Ext.MessageBox.YESNOCANCEL, fn: showResult, icon: Ext.MessageBox.QUESTION }); return false; } ErgebnisseTabs.getActiveTab().getStore().load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") } }); if (plan_current > nav_cookie_ergebnisse.get("current_year")) { Ext.getCmp('calc_bis').disable(); } else { Ext.getCmp('calc_bis').enable(); } } }); ProfitCenter_dropdown.on('collapse', function(combo){ function showResult(btn){ switch (btn) { case 'yes': combo.setValue(nav_cookie_ergebnisse.get("current_profitcenter")); Save(); break; case 'no': BWAGrid.store.load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") } }); break; default: return false; } } if (isStoreDirty(BWAGrid.store)) { Ext.MessageBox.show({ title: 'BWA', msg: 'Wollen Sie zuerst die letze Änderungen speichern ?', buttons: Ext.MessageBox.YESNOCANCEL, fn: showResult, icon: Ext.MessageBox.QUESTION }); return false; } nav_cookie_ergebnisse.set("current_profitcenter", Number(combo.getValue())); ErgebnisseTabs.getActiveTab().getStore().load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: combo.getValue() } }); }); GUVGrid.on("activate", function(){ GUVGrid.getStore().load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") } }); }); BWAGrid.on("render", function(){ BWAGrid.getStore().load({ params: { year: nav_cookie_ergebnisse.get("current_year"), profitcenter: nav_cookie_ergebnisse.get("current_profitcenter") } }); }); ZuordnungenGrid.on("activate", function(){ ZuordnungenGrid.getStore().load({ params: { year: nav_cookie_ergebnisse.get("current_year") } }); }); //-------- PUBLIC EVENTS.END ----------- return { returnGrid: function(){ return ErgebnissePanel; } }; }; var fusion; Ext.lib.Ajax.forceActiveX = true; oc.ProductkalkulationPanel = function(item) { // Grid function MainKalkulationen() { var selectedId; function deleteProduct(cnr, store) { function result(btn) { if (btn == 'ok') { Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: 1, CNR: cnr, target: 'product' }, success: function(form, action) { store.reload(); } }); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie es löschen möchten? ', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: result }); } var grActions = new Ext.ux.grid.RowActions({ actions: [ /*{ iconCls: 'icon-calculator-edit', tooltip: 'Kalkulation Bearbeiten' }, */ { iconCls: 'icon-minus', tooltip: 'Kalkulation Löschen' }], groupActions: [{ qtip: 'Neue Version Einfügen', iconCls: 'icon-plus', align: 'left' }, { qtip: 'Produkt bearbeiten', iconCls: 'icon-edit-record', align: 'left' }, { qtip: 'Produkt löschen', iconCls: 'icon-minus', align: 'left' }], callbacks: { 'icon-plus': function(grid, record, action, row, col) { } } }); grActions.on({ action: function(grid, record, action, row, col) { switch (action) { case 'icon-minus': //delete product version current_version = record.data.Version; selectedId = record.data.CNR; deleteRecord(selectedId, current_version, MainKalkulationenGrid.store); break; } }, groupaction: function(grid, records, action, groupId) { switch (action) { case 'icon-plus': current_produkt = records[0].data.Produkt; current_version = records[0].data.Version; var selectedId = records[0].data.CNR; Edit_Product(selectedId, current_produkt); break; case 'icon-edit-record': edit_produkt(records[0].data.CNR); break; case 'icon-minus': selectedId = records[0].data.CNR; deleteProduct(selectedId, MainKalkulationenGrid.store); break; } } }); var mainstoreKalkulationen = new Ext.data.GroupingStore({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation', method: 'GET' }), reader: new Ext.data.JsonReader({ root: 'data', totalProperty: 'total' }, [{ name: 'Produkt' }, { name: 'Version' }, { name: 'Jahr', mapping: 'Jahr', type: 'int' }, { name: 'von', type: 'date', dateFormat: 'd.m.Y' }, { name: 'bis', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Bemerkung' }, { name: 'CNR' }, { name: 'ProfitCenter' }, { name: 'PCNR' }, { name: 'plan' }]), sortInfo: { field: 'PCNR', direction: "ASC" }, remoteGroup: false, remoteSort: false, groupField: ['Produkt'] }); var kView = new Ext.grid.GroupingView({ hideGroupedColumn: true, forceFit: true, showGroupName: false, groupTextTpl: '[{[values.rs[0].data.ProfitCenter]}]    {text} ({[values.rs.length]} {[values.rs.length > 1 ? "Versionen" : "Version"]})' }); var plan_checkbox = new Ext.grid.CheckColumn({ id: 'Plan', header: "Plan", dataIndex: 'plan', width: 20 }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown_ = new Ext.form.ComboBox({ listeners: { beforequery: function(combo) { this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; } }, value: nav_cookie_kalkulation.get("current_year"), emptyText: nav_cookie_kalkulation.get("current_year"), name: 'Year', editable: false, typeAhead: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var KalkulationenGridcm = new Ext.grid.ColumnModel([{ id: 'Produkt', header: "Produkt", dataIndex: 'Produkt', width: 50 }, { id: 'Version', header: "Version", dataIndex: 'Version', width: 150 }, { id: 'Basis', header: "Basis", dataIndex: 'Jahr', width: 100, editor: Year_dropdown_ }, { id: 'Bemerkung', header: "Bemerkung", dataIndex: 'Bemerkung', width: 200, editor: new Ext.form.TextField({ allowBlank: false }) }, plan_checkbox, { id: 'ProfitCenter', header: 'ProfitCenter', dataIndex: 'ProfitCenter', width: 60 }, { id: 'PCNR', header: '', dataIndex: 'PCNR', hidden: true }, grActions]); KalkulationenGridcm.isCellEditable = function(col, row) { return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row); }; var MainKalkulationenGrid = new Ext.grid.EditorGridPanel({ title: 'Kalkulationen', view: kView, viewConfig: { forceFit: true }, stripeRows: true, loadMask: true, header: false, border: false, autoScroll: true, store: mainstoreKalkulationen, cm: KalkulationenGridcm, plugins: [grActions, plan_checkbox], collapsible: true, animCollapse: true, listeners: { rowdblclick: function(grid, rowIndex) { var record = grid.getStore().getAt(rowIndex); current_produkt = record.data.Produkt; current_version = record.data.Version; selectedId = record.data.CNR; Edit_Kalkulation(selectedId, current_version, current_produkt); } }, tbar: [{ text: 'Aktualisieren ', iconCls: 'icon-db-refresh', handler: function() { mainstoreKalkulationen.reload(); } }, { text: 'Speichern', iconCls: 'icon-save-table', handler: function() { var jsonData = "["; for (i = 0; i < mainstoreKalkulationen.getCount(); i++) { record = mainstoreKalkulationen.getAt(i); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ waitMsg: 'Bitte warten...', url: 'io.php?type=grid', params: { data: jsonData, key: 'CNR,Version', table: 'kalkulationsversion' }, success: function(form, action) { Ext.MessageBox.alert('Info', 'Die Änderungen wurden gespeichert'); mainstoreKalkulationen.reload(); } }); } }, { text: 'Neuer Produkt', iconCls: 'icon-plus', handler: function() { Edit_Product(99999); } }, '->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function() { submitQuery(MainKalkulationenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function() { submitQuery(MainKalkulationenGrid, 'print'); } }] }); return MainKalkulationenGrid; } // Grid // inside EditWindow function Parameter(store, field, value) { for (i = 0; i < store.getCount(); i++) { record = store.getAt(i); if ((field == 'Formel') && (record.data.Formel == value)) { result = record.data.Betrag; } else if ((field == 'KNR') && (record.data.KNR == value)) { result = record.data.Betrag; } } return result; } // Grid function Personal_Stundensaetze() { var uberPersonencm = new Ext.grid.ColumnModel([{ id: 'PNR', header: "Nr", dataIndex: 'PNR', align: 'right', width: 40 }, { header: "", dataIndex: 'GKZ', align: 'right', renderer: 'um', hidden: true }, { header: "Name", dataIndex: 'full_name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 150 }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', width: 100 }, { header: "Stunden", dataIndex: 'Stunden', align: 'right', renderer: 'hour', width: 80 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', width: 100 }, { header: "ProfitCenter", dataIndex: 'ProfitCenter', hidden: true }]); uberPersonencm.defaultSortable = true; mView = new Ext.grid.GroupingView({ hideGroupedColumn: true, showGroupName: false, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Personen" : "Person"]})' }); var storeUberPersonen = new Ext.data.GroupingStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Name', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=personalgetstunden', method: 'POST', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'GKZ' }, { name: 'PNR' }, { name: 'Name' }, { name: 'Vorname' }, { name: 'full_name' }, { name: 'Funktion' }, { name: 'Kosten', type: 'float' }, { name: 'Stunden', type: 'float' }, { name: 'Stundensatz', type: 'float' }, { name: 'ProfitCenter' }]) }); var UberPersonenGrid = new oc.Grid({ store: storeUberPersonen, cm: uberPersonencm, title: 'Personal Stundensätze', view: mView, layout: 'fit', viewConfig: { forceFit: true }, deferredRender: false, height: 'auto', bbar: new Ext.AdvancedPagingToolbar({ nav_var: nav_cookie_kalkulation, pageSize: 20, store: storeUberPersonen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), tbar: ['->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function() { submitQuery(UberPersonenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function() { submitQuery(UberPersonenGrid, 'print'); } }] }); return UberPersonenGrid; } // Grid function Anlagen_Stundensaetze() { var uberAnlagencm = new Ext.grid.ColumnModel([{ id: 'Nummer', header: "Nr", dataIndex: 'Nummer', align: 'right', width: 70 }, { header: "", dataIndex: 'GKZ', align: 'right', renderer: 'um', hidden: true }, { header: "Name", dataIndex: 'Name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 150 }, { header: "Typ", dataIndex: 'Typ', width: 100 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', width: 100 }, { header: 'ProfitCenter', dataIndex: 'ProfitCenter', hidden: true }]); uberAnlagencm.defaultSortable = true; aView = new Ext.grid.GroupingView({ hideGroupedColumn: true, showGroupName: false, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); var storeUberAnlagen = new Ext.data.GroupingStore({ groupField: 'ProfitCenter', sortInfo: { field: 'Name', direction: 'ASC', totalProperty: 'total' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=anlagengetstunden', method: 'POST', baseParams: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'GKZ' }, { name: 'ANR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Typ' }, { name: 'Stundensatz', type: 'float' }, { name: 'ProfitCenter' }]) }); var UberAnlagenGrid = new oc.Grid({ store: storeUberAnlagen, cm: uberAnlagencm, title: 'Anlagen Stundensätze', view: aView, layout: 'fit', viewConfig: { forceFit: true }, deferredRender: false, height: 'auto', bbar: new Ext.AdvancedPagingToolbar({ nav_var: nav_cookie_kalkulation, pageSize: 20, store: storeUberAnlagen, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), tbar: ['->', { text: 'MS Excel', iconCls: 'icon-excel', handler: function() { submitQuery(UberAnlagenGrid); } }, '-', { text: 'Druckversion', iconCls: 'icon-print', handler: function() { submitQuery(UberAnlagenGrid, 'print'); } }] }); return UberAnlagenGrid; } var MainKalkulationenGrid = MainKalkulationen(); var Personal_StundensaetzeGrid = Personal_Stundensaetze(); var Anlagen_StundensaetzeGrid = Anlagen_Stundensaetze(); function deleteRecord(cnr, version, store) { function Result(btn) { if (btn == 'ok') { Ext.Ajax.request({ url: 'io.php?type=delete', params: { id: 1, CNR: cnr, version: version, target: 'version' }, success: function(form, action) { store.reload(); } }); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Sind Sie sicher, dass Sie die Version: ' + version + ' löschen möchten?', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: Result }); } function edit_produkt(product) { win = Ext.getCmp('prod_' + product); if (win) { win.show(); win.expand(); return false; } var Produkt_edit = new Ext.form.TextField({ fieldLabel: 'Produkt', name: 'Produckt', id: 'Produkt', allowBlank: false, anchor: '90%' }); var CNR_edit = new Ext.form.TextField({ fieldLabel: 'CNR', id: 'CNR', name: 'CNR', hidden: true, hideLabel: true }); var fPanel = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 75, url: 'api.php?a=list&t=get_prod_name&id=' + product,// + '&profitcenter=' + nav_cookie_kalkulation.get("current_profitcenter"), reader: new Ext.data.JsonReader({ root: 'data' }, ['CNR', 'Produkt']), items: [Produkt_edit, CNR_edit] }); fPanel.load(); var edit_win = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Produkt bearbeiten', id: 'prod_' + product, width: 400, height: 200, closeAction: 'destroy', bodyStyle: 'padding:15px', items: fPanel, buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function() { if (fPanel.form.isValid()) { if (Produkt_edit.isDirty()) { Ext.Ajax.request({ url: 'io.php', params: { id: product, field: 'CNR', CNR: fPanel.getForm().findField('CNR').getValue(), Produkt: fPanel.getForm().findField('Produkt').getValue(), table: 'kalkulation' }, success: function(result, request) { } }); } edit_win.destroy(); MainKalkulationenGrid.store.reload(); } else { Ext.MessageBox.alert('Fehler', 'Bitte füllen Sie die markierte Felder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function() { edit_win.destroy(); MainKalkulationenGrid.store.reload(); } }] }); edit_win.show(); } nav_cookie_kalkulation.set("current_year", plan_current); var current_produkt; var current_version; var gridViewKalk = new Ext.grid.GridView({ forceFit: true, getRowClass: function(row, index, record) { if (row.data.Anzeigen !== '1') { return 'hide'; } switch (row.data.Sign) { case '=': return 'yellowrow'; case '+': return 'grayrow'; } } }); var menuHandler = { render: function(p) { p.body.on({ 'click': function(e, t) { e.stopEvent(); if (String(t.getAttribute('target')).toLowerCase() == 'fusion') { var p = Ext.getCmp('demoFusion'); if (p && p.mediaCfg.url != t.getAttribute('chart')) { p.mediaCfg.url = t.getAttribute('chart'); p.renderMedia(); } } }, delegate: 'span' }); } }; var getTools = function() { return [{ id: 'gear', handler: function(e, t, p) { p.refreshMedia(); }, qtip: { text: 'Refresh the Chart' } }, { id: 'print', handler: function(e, t, p) { p.print(); }, qtip: { text: 'Print the Chart' } }]; }; var chartEvents = {}; /** * GKZ-renderer used in the GroupingStore-title * * @param {String} text */ Ext.util.Format.um = function(text) { switch (text) { case 'G': return 'Teams'; case 'M': return 'Durchschnitte'; case 'P': return 'Personen'; case 'AfA': case 'A': return 'Anlagen'; default: return text; } return text; }; var storeProfitCenter_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function() { this.getStore().load({ callback: function(store) { rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo) { this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ name: 'Year', typeAhead: false, editable: false, store: storeYear_dropdown, displayField: 'title', valueField: 'id', forceSelection: true, listeners: { beforequery: function(combo) { this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; }, render: function() { this.getStore().load({ callback: function(store) { rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); } } }); var betragRenderer = function(data, cell, record, rowIndex, columnIndex, store) { if (record.get('Eingabe') == 1) { cell.attr = 'style="background-color: #C3FF8F !important;"'; } switch (record.data.EOA) { case '100': return Ext.util.Format.realpercents(record.data.Betrag); case '10': return record.data.Betrag; default: return Ext.util.Format.deMoney(record.data.Betrag, 2); } }; var einzelpreisRenderer = function(data, cell, record, rowIndex, columnIndex, store) { switch (record.data.EOA) { case '100': return Ext.util.Format.realpercents(record.data.Einzelpreis); case '10': return record.data.Einzelpreis; default: return Ext.util.Format.deMoney_no_nulls(record.data.Einzelpreis); } }; function Edit_Product(selectedId, current_produkt) { var Produkt_edit = new Ext.form.TextField({ fieldLabel: 'Produkt', name: 'Produkt', id: 'Produkt', allowBlank: false, anchor: '90%' }); var Version_edit = new Ext.form.TextField({ fieldLabel: 'Version', name: 'Version', id: 'Version', allowBlank: false, anchor: '90%' }); var CNR_edit = new Ext.form.TextField({ fieldLabel: 'CNR', id: 'CNR', name: 'CNR', hidden: true, hideLabel: true }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal' }), baseParams: { pc: nav_cookie_kalkulation.get("current_profitcenter") }, reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Jahr_edit = new Ext.form.ComboBox({ allowBlank: false, name: 'Jahr', fieldLabel: 'Basis Jahr', editable: false, typeAhead: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var Bemerkung_Version_edit = new Ext.form.TextArea({ fieldLabel: 'Bemerkung der Version', name: 'Version_Bemerkung', anchor: '90%', id: 'Version_Bemerkung' }); var formPanel = new Ext.form.FormPanel({ baseCls: 'x-plain', labelWidth: 75, url: 'api.php?a=list&t=kalkulation&id=' + selectedId + '&year=' + nav_cookie_pc.get("current_year"), reader: new Ext.data.JsonReader({ root: 'data' }, ['CNR', 'Produkt', 'Version_Bemerkung']), items: [Produkt_edit, Version_edit, Bemerkung_Version_edit, Jahr_edit, CNR_edit] }); formPanel.load(); if (selectedId !== 99999) { Produkt_edit.disable(); } var edit_product_win = new Ext.Window({ layout: 'fit', margins: '5 5 5 5', title: 'Produkt/Kalkulation bearbeiten', width: 400, height: 400, closeAction: 'destroy', bodyStyle: 'padding:15px', items: formPanel, buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function() { if (formPanel.form.isValid()) { if (Produkt_edit.isDirty()) { Ext.Ajax.request({ url: 'io.php', params: { field: 'CNR', CNR: formPanel.getForm().findField('CNR').getValue(), Produkt: formPanel.getForm().findField('Produkt').getValue(), Bemerkung: formPanel.getForm().findField('Version_Bemerkung').getValue(), table: 'kalkulation' }, success: function(result, request) { } }); } Ext.Ajax.request({ url: 'api.php?a=newKNR', params: { cnr: formPanel.getForm().findField('CNR').getValue(), version: formPanel.getForm().findField('Version').getValue() } }); Ext.Ajax.request({ url: 'io.php', params: { field: 'CNR, Version', CNR: formPanel.getForm().findField('CNR').getValue(), Version: formPanel.getForm().findField('Version').getValue(), Bemerkung: formPanel.getForm().findField('Version_Bemerkung').getValue(), Jahr: formPanel.getForm().findField('Jahr').getValue(), PCNR: nav_cookie_kalkulation.get("current_profitcenter"), table: 'kalkulationsversion' } }); edit_product_win.destroy(); MainKalkulationenGrid.store.reload(); } else { Ext.MessageBox.alert('Fehler', 'Bitte füllen Sie die markierte Felder aus.'); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function() { edit_product_win.destroy(); MainKalkulationenGrid.store.reload(); } }] }); edit_product_win.show(); } function Personal(selectedId) { var action_add = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-plus', callback: function(grid, record, action, row, col) { Ext.Ajax.request({ url: 'api.php', params: { a: 'assign_k_members', member_id: record.data.PNR, team_id: teamId, version: current_version, stundensatz: record.data.Stundensatz, kosten: record.data.Stundensatz }, method: 'GET', success: function(result, request) { storeFreeMembers.reload(); storeTeamMember.reload(); } }); }, tooltip: 'Person zur Gruppe einfügen' }] }); var action_remove = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col) { Ext.Ajax.request({ url: 'api.php', params: { a: 'delete_k_members', member_id: record.data.PNR, team_id: teamId, version: current_version }, method: 'GET', success: function(result, request) { storeFreeMembers.reload(); storeTeamMember.reload(); } }); }, tooltip: 'Person zur Gruppe entfernen' }] }); var TeamMembercm = new Ext.grid.ColumnModel([ { header: "Nr", dataIndex: 'Nummer', align: 'right', width: 40 }, { header: "", dataIndex: 'GKZ', align: 'right', renderer: 'um', hidden: true }, { header: "Name", dataIndex: 'full_name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 120 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: 'average', width: 80 }, { header: "Zeitaufwand", dataIndex: 'Zeitaufwand', renderer: function(v) { return v + ' h'; }, align: 'right', width: 80, editor: new Ext.form.NumberField({ decimalSeparator: ',', allowBlank: false }) }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', summaryType: 'sum', width: 80 }, action_remove]); TeamMembercm.defaultSortable = true; mView = new Ext.grid.GroupingView({ hideGroupedColumn: true, showGroupName: false, forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); var storeTeamMember = new Ext.data.GroupingStore({ groupField: 'GKZ', sortInfo: { field: 'Name', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_personal_teams&mid=' + selectedId + '&version=' + current_version + '&year=' + nav_cookie_kalkulation.get("current_year"), method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'GKZ' }, { name: 'PNR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Vorname' }, { name: 'full_name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }, { name: 'Zeitaufwand', type: 'float' }, { name: 'Kosten', type: 'float' }]) }); var FreeMemberscm = new Ext.grid.ColumnModel([ { header: "Nr", dataIndex: 'Nummer', align: 'right', width: 40 }, { header: "", dataIndex: 'GKZ', align: 'right', renderer: 'um', hidden: true }, { header: "Name", dataIndex: 'Name', width: 150, hidden: true }, { header: "Vorname", dataIndex: 'Vorname', width: 150, hidden: true }, { header: "Name", dataIndex: 'full_name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 120 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', width: 80 }, action_add]); FreeMemberscm.defaultSortable = true; var mView1 = new Ext.grid.GroupingView({ hideGroupedColumn: true, forceFit: true, showGroupName: false, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); var storeFreeMembers = new Ext.data.GroupingStore({ groupField: 'GKZ', sortInfo: { field: 'Name', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_personal_teams&mid=' + selectedId + '&type=free&version=' + current_version + '&year=' + nav_cookie_kalkulation.get("current_year"), method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'PNR', totalProperty: 'total' }, [{ name: 'GKZ' }, { name: 'PNR' }, { name: 'Nummer' }, { name: 'Name' }, { name: 'Vorname' }, { name: 'full_name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }]) }); var TeamMemberGrid = new Ext.grid.EditorGridPanel({ title: 'Zugeordnet', store: storeTeamMember, cm: TeamMembercm, height: 300, view: mView, plugins: [new Ext.ux.grid.GridSummary(), action_remove], stripeRows: true, autoScroll: true, border: false, loadMask: true }); var FreeMembersGrid = new oc.Grid({ title: 'Nicht zugeordnet', store: storeFreeMembers, cm: FreeMemberscm, view: mView1, autoScroll: true, header: true, bbar: new Ext.PagingToolbar({ pageSize: 20, store: storeFreeMembers, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ width: 200, disableIndexes: ['Jahresbruttolohn', 'Lohnnebenkosten', 'SonstigeKosten', 'Kosten', 'Fehlzeiten', 'Stunden', 'Stundensatz', 'full_name'], fieldsprefix: 't1.' }), action_add] }); FreeMembersGrid.on('render', function() { FreeMembersGrid.store.load(); }); TeamMemberGrid.on('render', function() { TeamMemberGrid.store.load(); }); storeTeamMember.on("update", function(storeTeamMember, record, action) { if (record.dirty) { record.data.Kosten = parseFloat(record.data.Stundensatz) * parseFloat(record.data.Zeitaufwand); Ext.Ajax.request({ url: 'io.php', params: { PNR: record.data.PNR, Version: current_version, CNR: selectedId, table: 'k_personal', Zeitaufwand: record.data.Zeitaufwand, Kosten: record.data.Kosten == '' ? 0 : record.data.Kosten, id: record.data.PNR + ',' + current_version + ',' + selectedId, field: 'PNR,Version,CNR' }, method: 'POST', success: function(result, request) { storeTeamMember.commitChanges(); } }); } }); // Assign members to Team var teamId = selectedId; var panelFree = new Ext.Panel({ layout: 'fit', region: 'center', border: false, items: FreeMembersGrid }); var panelAssigned = new Ext.Panel({ layout: 'fit', region: 'north', split: 'true', border: false, height: 300, items: TeamMemberGrid }); var panel_personal = new Ext.Panel({ id: 'formpanel_personal', title: 'Personal', border: false, deferredRender: false, height: 600, layout: 'border', items: [panelAssigned, panelFree] }); return panel_personal; } function Material(selectedId) { var action_add = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-plus', callback: function(grid, record, action, row, col) { Ext.Ajax.request({ url: 'api.php', params: { a: 'assign_material', member_id: record.data.MNR, group_id: groupId, version: current_version, einzelpreis: record.data.Einzelpreis == '' ? 0 : record.data.Einzelpreis, kosten: record.data.Einzelpreis == '' ? 0 : record.data.Einzelpreis }, method: 'GET', success: function(result, request) { storeAssignedMaterial.reload(); storeFreeMaterial.reload(); } }); }, tooltip: 'Material einfügen' }] }); var action_remove = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col) { Ext.Ajax.request({ url: 'api.php', params: { a: 'delete_material', member_id: record.data.MNR, group_id: groupId, version: current_version }, method: 'GET', success: function(result, request) { storeAssignedMaterial.reload(); storeFreeMaterial.reload(); } }); }, tooltip: 'Material entfernen' }] }); var AssignedMaterialcm = new Ext.grid.ColumnModel([ { id: 'MNR', header: 'Datum', dataIndex: 'Datum', renderer: Ext.util.Format.dateRenderer('d.m.Y'), width: 70 }, { header: 'Artikel', dataIndex: 'Artikel', width: 200 }, { header: 'Einheit', dataIndex: 'Einheit', width: 70 }, { header: 'Preis', dataIndex: 'Einzelpreis', renderer: 'deMoney', align: 'right', width: 50 }, { header: 'Menge', dataIndex: 'Menge', align: 'right', width: 50, editor: new Ext.form.NumberField({ allowBlank: false }) }, { header: 'Kosten', dataIndex: 'Kosten', renderer: 'deMoney', align: 'right', summaryType: 'sum', width: 50 }, action_remove]); AssignedMaterialcm.defaultSortable = true; var FreeMaterialcm = new Ext.grid.ColumnModel([ { id: 'MNR', header: 'Datum', dataIndex: 'Datum', renderer: Ext.util.Format.dateRenderer('d.m.Y'), width: 70 }, { header: 'Artikel', dataIndex: 'Artikel', width: 200 }, { header: 'Einheit', dataIndex: 'Einheit', width: 70 }, { header: 'Preis', dataIndex: 'Einzelpreis', renderer: 'deMoney', align: 'right', width: 50 }, action_add]); FreeMaterialcm.defaultSortable = true; var storeAssignedMaterial = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=material_teams&mid=' + selectedId + '&year=' + nav_cookie_kalkulation.get("current_year") + '&version=' + current_version }), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR', totalProperty: 'total' }, [{ name: 'MNR' }, { name: 'Datum', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Artikel' }, { name: 'Einheit' }, { name: 'Einzelpreis', type: 'float' }, { name: 'Menge' }, { name: 'Kosten', type: 'float' }]) }); var storeFreeMaterial = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=material_teams&mid=' + selectedId + '&type=free&year=' + nav_cookie_kalkulation.get("current_year") + '&version=' + current_version }), reader: new Ext.data.JsonReader({ root: 'data', id: 'MNR', totalProperty: 'total' }, [{ name: 'MNR' }, { name: 'Datum', type: 'date', dateFormat: 'd.m.Y' }, { name: 'Artikel' }, { name: 'Einheit' }, { name: 'Einzelpreis', type: 'float' }]) }); var AssignedMaterialGrid = new Ext.grid.EditorGridPanel({ id: 'assigned', viewConfig: { forceFit: true }, loadMask: true, title: 'Zugeordnet', store: storeAssignedMaterial, cm: AssignedMaterialcm, stripeRows: true, plugins: [new Ext.ux.grid.GridSummary(), action_remove], autoScroll: false, border: false }); var FreeMaterialGrid = new oc.Grid({ id: 'free', viewConfig: { forceFit: true }, title: 'Nicht zugeordnet', store: storeFreeMaterial, cm: FreeMaterialcm, header: true, bbar: new Ext.PagingToolbar({ pageSize: 20, store: storeFreeMaterial, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ //disableIndexes:['LeasingDauer','LeasingErsteRate','Leasing','Von','Bis','Allgemein','G_sum','K_sum','D_sum'], width: 200, fieldsprefix: 't1.' }), action_add] }); AssignedMaterialGrid.on('render', function() { AssignedMaterialGrid.store.load({ params: { start: 0, limit: 20 } }); }); FreeMaterialGrid.on('render', function() { FreeMaterialGrid.store.load({ params: { start: 0, limit: 20 } }); }); storeAssignedMaterial.on("update", function(storeAssignedMaterial, record, action) { if (record.dirty) { record.data.Kosten = parseFloat(record.data.Einzelpreis) * parseFloat(record.data.Menge); Ext.Ajax.request({ url: 'io.php', params: { MNR: record.data.MNR, Version: current_version, CNR: selectedId, table: 'k_material', Menge: record.data.Menge, Kosten: record.data.Kosten, id: record.data.MNR + ',' + current_version + ',' + selectedId, field: 'MNR,Version,CNR' }, method: 'POST', success: function(result, request) { storeAssignedMaterial.commitChanges(); } }); } }); var groupId = selectedId; var panelFree = new Ext.Panel({ layout: 'fit', region: 'center', border: false, items: FreeMaterialGrid }); var panelAssigned = new Ext.Panel({ region: 'north', layout: 'fit', split: true, border: false, height: 300, items: AssignedMaterialGrid }); var panel = new Ext.Panel({ id: 'MAT', title: 'Material', border: false, height: 600, layout: 'border', deferredRender: false, items: [panelAssigned, panelFree] }); return panel; } function Anlagen(selectedId) { var action_add = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-plus', callback: function(grid, record, action, row, col) { record.data.Kosten = record.data.Stundensatz; Ext.Ajax.request({ url: 'api.php', params: { a: 'assign_a_members', member_id: record.data.ANR, team_id: teamId, version: current_version, stundensatz: record.data.Stundensatz == '' ? 0 : record.data.Stundensatz, kosten: record.data.Kosten == '' ? 0 : record.data.Kosten }, method: 'GET', success: function(result, request) { storeFreeMembers.reload(); storeTeamMember.reload(); } }); }, tooltip: 'Anlage einfügen' }] }); var action_remove = new Ext.ux.grid.RowActions({ keepSelection: true, actions: [{ iconCls: 'icon-minus', callback: function(grid, record, action, row, col) { Ext.Ajax.request({ url: 'api.php', params: { a: 'delete_a_members', member_id: record.data.ANR, team_id: teamId, version: current_version }, method: 'GET', success: function(result, request) { storeFreeMembers.reload(); storeTeamMember.reload(); } }); }, tooltip: 'Anlage entfernen' }] }); var TeamMembercm = new Ext.grid.ColumnModel([ { id: 'ANR', header: "Nr", dataIndex: 'ANR', align: 'right', width: 50 }, { header: "Name", dataIndex: 'Name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 90 }, { header: "Typ", dataIndex: 'Typ', align: 'right', renderer: 'um', width: 50 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', summaryType: 'average', width: 70 }, { header: "Zeitaufwand", dataIndex: 'Zeitaufwand', renderer: function(v) { return v + ' h'; }, align: 'right', width: 70, editor: new Ext.form.NumberField({ decimalSeparator: ',', allowBlank: false }) }, { header: "Kosten", dataIndex: 'Kosten', renderer: 'deMoney', summaryType: 'sum', align: 'right', width: 70 }, action_remove]); // by default columns are sortable TeamMembercm.defaultSortable = true; mView = new Ext.grid.GroupingView({ showGroupName: false, forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); var storeTeamMember = new Ext.data.GroupingStore({ groupField: 'Typ', sortInfo: { field: 'Name', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_anlagen_teams&mid=' + selectedId + '&year=' + nav_cookie_kalkulation.get("current_year") + '&version=' + current_version, method: 'POST', params: { year: nav_cookie_kalkulation.get("current_year") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'Typ' }, { name: 'ANR' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }, { name: 'Zeitaufwand', type: 'float' }, { name: 'Kosten', type: 'float' }]) }); var FreeMemberscm = new Ext.grid.ColumnModel([ { id: 'ANR', header: "Nr", dataIndex: 'ANR', align: 'right', width: 50 }, { header: "Name", dataIndex: 'Name', width: 150 }, { header: "Funktion", dataIndex: 'Funktion', width: 90 }, { header: "Typ", dataIndex: 'Typ', align: 'right', renderer: 'um', width: 50 }, { header: "Stundensatz", dataIndex: 'Stundensatz', renderer: 'deMoney', align: 'right', width: 70 }, action_add]); // by default columns are sortable FreeMemberscm.defaultSortable = true; mView1 = new Ext.grid.GroupingView({ showGroupName: false, forceFit: true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }); var storeFreeMembers = new Ext.data.GroupingStore({ groupField: 'Typ', sortInfo: { field: 'Name', direction: 'ASC' }, proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_anlagen_teams&type=free&mid=' + selectedId + '&year=' + nav_cookie_kalkulation.get("current_year") + '&version=' + current_version, method: 'POST', params: { year: nav_cookie_kalkulation.get("current_year") } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'ANR', totalProperty: 'total' }, [{ name: 'Typ' }, { name: 'ANR' }, { name: 'Name' }, { name: 'Funktion' }, { name: 'Stundensatz', type: 'float' }]) }); var TeamMemberGrid = new Ext.grid.EditorGridPanel({ title: 'Zugeordnet', store: storeTeamMember, cm: TeamMembercm, view: mView, plugins: [new Ext.ux.grid.GridSummary(), action_remove], stripeRows: true, autoScroll: true, border: false, loadMask: true }); var FreeMembersGrid = new oc.Grid({ title: 'Nicht zugeordnet', store: storeFreeMembers, cm: FreeMemberscm, header: true, view: mView1, bbar: new Ext.PagingToolbar({ pageSize: 20, store: storeFreeMembers, displayInfo: true, displayMsg: '{0} - {1} von {2}', emptyMsg: "Keine gefunden" }), plugins: [new oc.Search({ width: 200, disableIndexes: ['Nutzungsstunden', 'Nutzungsgrad', 'Stundensatz', 'Betriebskosten', 'Leasing', 'AfAKalk', 'AfA', 'AfARestwert', 'MieteRate', 'Miete', 'Allgemein', 'G_sum', 'K_sum', 'D_sum', 'Von', 'Bis', 'Kosten'], fieldsprefix: 't1.' }), action_add] }); FreeMembersGrid.on('render', function() { FreeMembersGrid.store.load(); }); TeamMemberGrid.on('render', function() { TeamMemberGrid.store.load(); }); storeTeamMember.on("update", function(storeTeamMember, record, action) { if (record.dirty) { record.data.Kosten = parseFloat(record.data.Stundensatz) * parseFloat(record.data.Zeitaufwand); Ext.Ajax.request({ url: 'io.php', params: { table: 'k_anlagen', ANR: record.data.ANR, Version: current_version, CNR: selectedId, Zeitaufwand: record.data.Zeitaufwand, Kosten: record.data.Kosten, id: record.data.ANR + ',' + current_version + ',' + selectedId, field: 'ANR,Version,CNR' }, method: 'POST', success: function(result, request) { storeTeamMember.commitChanges(); } }); } }); // Assign members to Team var teamId = selectedId; var panelFree = new Ext.Panel({ layout: 'fit', region: 'center', border: false, items: FreeMembersGrid }); var panelAssigned = new Ext.Panel({ region: 'north', layout: 'fit', split: true, border: false, height: 300, items: TeamMemberGrid }); var panel_anlagen = new Ext.Panel({ id: 'formpanel_anlagen', title: 'Anlagen', border: false, deferredRender: false, layout: 'border', items: [panelAssigned, panelFree] }); return panel_anlagen; } function Edit_Kalkulation(selectedId, current_version, current_produkt) { win = Ext.getCmp('product-' + selectedId); if (win) { win.show(); win.expand(); return false; } var storeKalkulationen = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation_konten', method: 'POST', baseParams: { cid: 0, version: '' } }), reader: new Ext.data.JsonReader({ root: 'data', id: 'KNR', totalProperty: 'total' }, [{ name: 'Sign' }, { name: 'KontoName' }, { name: 'Betrag', type: 'float' }, { name: 'Einzelpreis', type: 'float' }, { name: 'EOA' }, { name: 'Formel' }, { name: 'Version' }, { name: 'CNR' }, { name: 'KNR' }, { name: 'Eingabe' }, { name: 'Anzeigen' }, { name: 'EP' }]) }); //var random_kalk_id = Math.random(); /** * @param {Number} ANZ Stueckzahl * @param {Number} LOS Losgroesse * @param {Number} n count_of_kalk * @param (Ext.data.Store) store current store */ function einzelpreise(ANZ, LOS, n, store) { if (ANZ !== 0) { for (var i = 0; i < n; i++) { if (store.data.items[i].data.EP == 1) { store.data.items[i].data.Einzelpreis = parseFloat(store.data.items[i].data.Betrag) / ANZ; if (LOS > 0) { store.data.items[i].data.Einzelpreis = store.data.items[i].data.Einzelpreis / LOS; } store.data.items[store.indexOfId('20000')].data.Einzelpreis = 1; } } } } storeKalkulationen.on('load', function() { calculate(); var a = storeKalkulationen.data.items; var b = 'Betrag'; var count_of_kalk = storeKalkulationen.getTotalCount(); var ANZ = a[storeKalkulationen.indexOfId('20000')].data[b]; var LOS = a[storeKalkulationen.indexOfId('20100')].data[b]; einzelpreise(ANZ, LOS, count_of_kalk, storeKalkulationen); a[storeKalkulationen.indexOfId('10200')].data[b] *= 100; a[storeKalkulationen.indexOfId('10700')].data[b] *= 100; a[storeKalkulationen.indexOfId('21000')].data[b] *= 100; }); function KontoValue(index) { return storeKalkulationen.data.items[storeKalkulationen.indexOfId(String(index))].data.Betrag; } function BreakEven(selectedId) { function Form() { var header_label = new Ext.form.Label({ text: ' Break-Even - Produkt ' + current_produkt + ' - Version ' + current_version + ' - Datenbasis: ' + nav_cookie_kalkulation.get("current_year"), height: 150, style: 'font-weight: bold;' }); var stuckzahl_edit = new Ext.form.NumberField({ fieldLabel: '', name: 'stuckzahl', style: 'text-align: right', readOnly: true, cls: "readOnly", width: 150, hidden: true }); var umsatz_edit = new Ext.form.NumberField({ fieldLabel: 'Umsatz', name: 'umsatz', style: 'text-align: right', readOnly: true, cls: "readOnly", decimalSeparator: ',', suffix: '€', width: 150 }); var direktekosten_edit = new Ext.form.NumberField({ fieldLabel: 'Direkte Kosten', name: 'direktekosten', style: 'text-align: right', readOnly: true, cls: "readOnly", decimalSeparator: ',', suffix: '€', width: 150 }); var gemeinkosten_edit = new Ext.form.NumberField({ fieldLabel: 'Gemeinkosten', name: 'gemeinkosten', style: 'text-align: right', readOnly: true, cls: "readOnly", decimalSeparator: ',', suffix: '€', width: 150 }); var breakevent_edit = new Ext.form.NumberField({ fieldLabel: 'Break-Even', name: 'breakevent', style: 'font-weight: bold; text-align: right', readOnly: true, cls: "readOnly", decimalSeparator: ',', suffix: '€', width: 150 }); var stuck_edit = new Ext.form.NumberField({ fieldLabel: 'Stück', name: 'stuck', style: 'font-weight: bold; text-align: right', readOnly: true, cls: "readOnly", decimalSeparator: '.', allowDecimals: false, width: 150 }); var BreakEvenForm = new Ext.form.FormPanel({ //baseCls: 'x-plain', frame: false, region: 'north', labelWidth: 150, labelSeparator: ' ', //layout: 'form', //method: 'POST', height: 200, bodyStyle: 'padding:15px', reader: new Ext.data.JsonReader({ root: 'data' }, ['umsatz', 'direktekosten', 'gemeinkosten', 'stuckzahl', 'stuck', 'breakevent']), items: [header_label, stuckzahl_edit, { xtype: 'compositefield', items: [umsatz_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [direktekosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [gemeinkosten_edit, { xtype: 'displayfield', value: '€' }] }, { xtype: 'compositefield', items: [breakevent_edit, { xtype: 'displayfield', value: '€' }] }, stuck_edit] }); return BreakEvenForm; } function Grid() { var gridView = new Ext.grid.GridView({ forceFit: true, getRowClass: function(row, index) { if (Math.abs(row.data.gewinnverlust.toFixed(2)) === 0) { return 'yellowrow'; } } }); var Breakevencm = new Ext.grid.ColumnModel([{ id: 'Stuck', header: "Stück", width: 70, renderer: "round", dataIndex: 'stuck' }, { header: "Umsatz", width: 75, renderer: 'deMoney', align: 'right', dataIndex: 'umsatz' }, { header: "Fixkosten", width: 75, renderer: 'deMoney', align: 'right', dataIndex: 'fixkosten' }, { header: "Variable Kosten", width: 85, renderer: 'deMoney', align: 'right', dataIndex: 'variablekosten' }, { header: "Gesamtkosten", width: 85, renderer: 'deMoney', align: 'right', dataIndex: 'gesamtkosten' }, { header: "Gewinn/Verlust", width: 85, renderer: 'deMoney', align: 'right', dataIndex: 'gewinnverlust' }, { header: "Umsatzrendite", width: 85, align: 'right', renderer: 'realpercents', dataIndex: 'umsatzrendite' }]); Breakevencm.defaultSortable = true; var storeBreakeven = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=breakeven&format=grid', method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', id: 'stuck' }, [{ name: 'stuck' }, { name: 'umsatz', type: 'float' }, { name: 'fixkosten', type: 'float' }, { name: 'variablekosten', type: 'float' }, { name: 'gesamtkosten', type: 'float' }, { name: 'gewinnverlust', type: 'float' }, { name: 'umsatzrendite', type: 'float' }]) }); var BreakevenGrid = new oc.Grid({ store: storeBreakeven, cm: Breakevencm, view: gridView, title: 'Break-Even' }); return BreakevenGrid; } function Grafik() { BreakEvenGrafik = new Ext.ux.Chart.Fusion.Panel({ //header: false, //collapsible: true, title: 'Grafik', border: false, frame: false, fusionCfg: { id: 'breakeven', listeners: chartEvents }, //id: 'BreakEvenGrafik', chartURL: 'fusioncharts/MSLine.swf', //dataURL: 'api.php?a=list&t=breakeven&cid=' + selectedId + '&format=xml' + '&ver=' + current_version, //autoScroll: false, //floating: false, /* listeners: { show: function(p) { if (p.floating) { p.setPosition(p.x || 10, p.y || 10); } } }, */ tools: getTools()/* , mediaCfg: { width: 620 } */ }); return BreakEvenGrafik; } var BreakevenForm = Form(); var BreakevenGrid = Grid(); var BreakevenGrafik = Grafik(); var BreakevenTabPanel = new Ext.TabPanel({ //columnWidth: 1, border: false, activeTab: 0, //height: 300, region: 'center', items: [BreakevenGrid, BreakevenGrafik] }); var BreakEvenPanel = new Ext.Panel({ title: 'Break-Even', layout: 'border', defaults: { columnWidth: 1 }, items: [BreakevenForm, BreakevenTabPanel] }); BreakEvenPanel.on('activate', function() { var params = '&stuckzahl=' + KontoValue(20000) + '&direktekosten=' + KontoValue(99350) + '&gemeinkosten=' + KontoValue(90420) + '&umsatz=' + KontoValue(99100); if (KontoValue(99350) != 0 && !isNaN(KontoValue(99350))) { BreakevenForm.form.load({ url: 'api.php?a=list&t=breakeven&format=form' + params }); BreakevenGrid.store.load({ url: 'api.php?a=list&t=breakeven&format=grid', params: params }); BreakevenGrafik.setChartDataURL('api.php?a=list&t=breakeven&format=xml' + params); //BreakevenGrafik.refreshMedia(); } }); return BreakEvenPanel; } function calculate() { var counter = 0; var _PKUnproduktiv; var _Gemeinkostenrest; var _AnlagenkostenrestOhneAfa; var _Anlagenkostenrest; var _AnlagenkostenOhneAfa; var _Materialkosten; var _Personalkosten; var _Anlagenkosten; var _GuV; Ext.get('Kalkulationen-panel').mask('Bitte warten ...'); function PKUnproduktiv() { Ext.Ajax.request({ url: 'api.php?a=list&t=k_PKUnproduktiv', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") }, success: function(result, request) { _PKUnproduktiv = Number(result.responseText); counter++; calc(); } }); } function Gemeinkostenrest() { Ext.Ajax.request({ url: 'api.php?a=list&t=k_Gemeinkostenrest', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") }, success: function(result, request) { _Gemeinkostenrest = Number(result.responseText); counter++; calc(); } }); } function AnlagenkostenrestOhneAfa() { Ext.Ajax.request({ url: 'api.php?a=list&t=k_AnlagenkostenrestOhneAfa', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") }, success: function(result, request) { _AnlagenkostenrestOhneAfa = Number(result.responseText); counter++; calc(); } }); } function Anlagenkostenrest() { Ext.Ajax.request({ url: 'api.php?a=list&t=k_Anlagenkostenrest', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") }, success: function(result, request) { _Anlagenkostenrest = Number(result.responseText); counter++; calc(); } }); } function AnlagenkostenOhneAfa() { Ext.Ajax.request({ url: 'api.php?a=list&t=k_AnlagenkostenOhneAfa', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), cnr: selectedId, version: current_version }, success: function(result, request) { _AnlagenkostenOhneAfa = Number(result.responseText); counter++; calc(); } }); } function Materialkosten() { Ext.Ajax.request({ url: 'api.php?a=list&t=materialkosten', params: { cnr: selectedId, version: current_version }, success: function(result, request) { _Materialkosten = Number(result.responseText); counter++; calc(); } }); } function Personalkosten() { Ext.Ajax.request({ url: 'api.php?a=list&t=personalkosten', params: { cnr: selectedId, version: current_version }, success: function(result, request) { _Personalkosten = Number(result.responseText); counter++; calc(); } }); } function Anlagenkosten() { Ext.Ajax.request({ url: 'api.php?a=list&t=anlagenkosten', params: { cnr: selectedId, version: current_version }, success: function(result, request) { _Anlagenkosten = Number(result.responseText); counter++; calc(); } }); } function GuV() { Ext.Ajax.request({ url: 'api.php?a=list&t=getguv', params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") }, success: function(result, request) { _GuV = Number(result.responseText); counter++; calc(); } }); } PKUnproduktiv(); Gemeinkostenrest(); AnlagenkostenrestOhneAfa(); Anlagenkostenrest(); AnlagenkostenOhneAfa(); Materialkosten(); Personalkosten(); Anlagenkosten(); GuV(); function calc() { if(counter < 9) return; var a = storeKalkulationen.data.items; var b = 'Betrag'; var count_of_kalk = storeKalkulationen.getTotalCount(); var PG = KontoValue(10200); var ANZ = KontoValue(20000); var LOS = KontoValue(20100); var GUV = KontoValue(300); var BPU = KontoValue(400); var JOP = KontoValue(99150); var PU = KontoValue(200); var JU = KontoValue(99160); var PKU = KontoValue(41500); var GKR = KontoValue(48000); var AKR = KontoValue(48200); var AJK = KontoValue(10600); var PJU = KontoValue(10700); var FK = KontoValue(30700); var MK = KontoValue(30500); var MFK = KontoValue(90200); var PK = KontoValue(90300); var AK = KontoValue(90410); var FKP = KontoValue(99350); var PKUA = KontoValue(41501); var GKRA = KontoValue(48001); var AKRA = KontoValue(48201); var GKA = KontoValue(90420); var NPBE = KontoValue(99800); var G = KontoValue(90400); var NP = KontoValue(99100); var PJNPU = KontoValue(21000); //Value("GUV") = Betrag(90100, "GuV", PCNR, Jahr) GUV = _GuV; // Value("JOP") = Value("GUV") - Value("BPU") JOP = GUV - BPU; // Value("MK") = Materialkosten() * Value("ANZ") MK = _Materialkosten * ANZ; // Value("MFK") = Value("MK") + Value("FK") MFK = MK + FK; //Value("PK") = Personalkosten() * Value("ANZ") PK = _Personalkosten * ANZ; //Value("AK") = Anlagenkosten() * Value("ANZ") AK = _Anlagenkosten * ANZ; // Value("FKP") = Value("MFK") + Value("PK") + Value("AK") FKP = MFK + PK + AK; //Value("PKU") = PKUnproduktiv() PKU = _PKUnproduktiv; //Value("GKR") = Gemeinkostenrest - AnlagenkostenOhneAfa * Value("ANZ") GKR = _Gemeinkostenrest - _AnlagenkostenOhneAfa * ANZ; //Value("AKR") = Anlagenkostenrest AKR = _Anlagenkostenrest; // Value("AJK") = Value("PKU") + Value("GKR") + Value("AKR") AJK = PKU + GKR + AKR; //var linear = false; var p, q; if (kalk_linear == 'Nein') { /* P = (value("JOP") * (1 - value("PG")) + value("FKP") - value("AJK")) / value("AJK") q = -(value("FKP")) / value("AJK") */ p = (JOP * (1 - (PG / 100)) + FKP - AJK) / AJK; q = (-1 * FKP) / AJK; PJU = (-1 * p + Math.sqrt(p * p - 4 * q)) / 2; if (PJU == 1) { NP = 0; } else { NP = PJU * JOP / (1 - PJU); } } else { /* P = (value("JOP") - value("AJK") + value("FKP")) / value("AJK") q = -value("FKP") / value("AJK") */ p = (JOP - AJK + FKP) / AJK; q = (-1 * FKP) / AJK; PJU = (-1 * p + Math.sqrt(p * p - 4 * q)) / 2; if (PJU == 1) { NPBE = 0; } else { NPBE = PJU * JOP / (1 - PJU); } //value("NP") = value("NPBE") / (1 - value("PG")) NP = NPBE / (1 - (PG / 100)); } /* value("PJU") = (-P + Sqr(P * P - 4 * q)) / 2 If value("PJU") = 1 Then value("NP") = 0 Else value("NP") = value("PJU") * value("JOP") / (1 - value("PJU")) End If */ // Value("PU") = Value("NP") PU = NP; // Value("JU") = Value("PU") + Value("JOP") JU = PU + JOP; //Value("PJNPU") = Value("NP") / (Value("JOP") + Value("NP")) if ((JOP + NP) == 0 || isNaN(JOP + NP)) { PJNPU = 0; } else { PJNPU = 100 * NP / (JOP + NP); } //Value("PKUA") = Value("PKU") * Value("PJU") PKUA = PKU * PJU; //Value("GKRA") = Value("GKR") * Value("PJU") GKRA = GKR * PJU; //Value("AKRA") = Value("AKR") * Value("PJU") AKRA = AKR * PJU; //Value("GKA") = Value("AJK") * Value("PJU") GKA = AJK * PJU; if (kalk_linear == 'Nein') { NPBE = FKP + GKA; // Value("G") = Value("NP") - (Value("FKP") + Value("GKA")) G = NP - (FKP + GKA); } else { // value("G") = value("NP") - (value("FKP") + value("GKA")) G = NP - (FKP + GKA); } PJU = PJU * 100; a[storeKalkulationen.indexOfId('10200')].data[b] = PG; //*stuckzahl* a[storeKalkulationen.indexOfId('20000')].data[b] = ANZ; a[storeKalkulationen.indexOfId('20100')].data[b] = LOS; a[storeKalkulationen.indexOfId('300')].data[b] = GUV; a[storeKalkulationen.indexOfId('400')].data[b] = BPU; a[storeKalkulationen.indexOfId('99150')].data[b] = JOP; a[storeKalkulationen.indexOfId('200')].data[b] = PU; a[storeKalkulationen.indexOfId('99160')].data[b] = JU; a[storeKalkulationen.indexOfId('41500')].data[b] = PKU; a[storeKalkulationen.indexOfId('48000')].data[b] = GKR; a[storeKalkulationen.indexOfId('48200')].data[b] = AKR; a[storeKalkulationen.indexOfId('10600')].data[b] = AJK; a[storeKalkulationen.indexOfId('10700')].data[b] = PJU; a[storeKalkulationen.indexOfId('30700')].data[b] = FK; a[storeKalkulationen.indexOfId('30500')].data[b] = MK; a[storeKalkulationen.indexOfId('90200')].data[b] = MFK; a[storeKalkulationen.indexOfId('90300')].data[b] = PK; a[storeKalkulationen.indexOfId('90410')].data[b] = AK; //*direktekosten* a[storeKalkulationen.indexOfId('99350')].data[b] = FKP; a[storeKalkulationen.indexOfId('41501')].data[b] = PKUA; a[storeKalkulationen.indexOfId('48001')].data[b] = GKRA; a[storeKalkulationen.indexOfId('48201')].data[b] = AKRA; //*gemeinkosten* a[storeKalkulationen.indexOfId('90420')].data[b] = GKA; a[storeKalkulationen.indexOfId('99800')].data[b] = NPBE; a[storeKalkulationen.indexOfId('90400')].data[b] = G; //*umsatz* a[storeKalkulationen.indexOfId('99100')].data[b] = NP; a[storeKalkulationen.indexOfId('21000')].data[b] = PJNPU; // berechne die Einzelpreise einzelpreise(ANZ, LOS, count_of_kalk, storeKalkulationen); // repaint the grid KalkulationenGrid.reconfigure(storeKalkulationen, KalkulationenGridcm); Ext.get('Kalkulationen-panel').unmask(); } } function Save_As(selectedId) { function ProduktDropdown() { var storeProdukt = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=kalkulation&year=' + nav_cookie_kalkulation.get("current_year") + '&pc=' + nav_cookie_kalkulation.get("current_profitcenter") }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'Produkt' }, { name: 'CNR' }]) }); storeProdukt.load(); var Produkt_edit = new Ext.form.ComboBox({ name: 'CNR', fieldLabel: 'Produkt', typeAhead: false, triggerAction: 'all', store: storeProdukt, displayField: 'Produkt', valueField: 'CNR', anchor: '90%', renderer: function(v) { return storeProdukt.data[v].data.items[v].data.Bezeichnung; } }); return Produkt_edit; } var Produkt_edit = ProduktDropdown(); var Version_edit = new Ext.form.TextField({ fieldLabel: 'Version', name: 'Version', allowBlank: false, anchor: '90%' }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Jahr_edit = new Ext.form.ComboBox({ allowBlank: false, name: 'Jahr', fieldLabel: 'Basis Jahr', editable: false, typeAhead: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var Bemerkung_edit = new Ext.form.TextArea({ fieldLabel: 'Bemerkung', name: 'Bemerkung', anchor: '90%', allowBlank: true }); formPanel = new Ext.form.FormPanel({ id: 'fp1', baseCls: 'x-plain', labelWidth: 75, url: 'api.php?a=list&t=kalkulation&id=' + selectedId + '&version=' + current_version, reader: new Ext.data.JsonReader({ root: 'data' }, ['CNR', 'Version', 'Jahr', 'Bemerkung']), items: [Produkt_edit, Version_edit, Jahr_edit, Bemerkung_edit] }); formPanel.load(); Produkt_edit.disable(); var edit_product_win = new Ext.Window({ modal: true, layout: 'fit', margins: '5 5 5 5', title: current_produkt + ' : ' + current_version, width: 400, closeAction: 'destroy', height: 250, bodyStyle: 'padding:15px', items: formPanel, buttons: [{ text: 'Speichern', iconCls: 'icon-save-table', handler: function() { if (formPanel.form.isValid()) { formPanel.form.submit({ url: 'io.php', params: { id: selectedId + ',' + formPanel.getForm().findField("Version").getValue(), PCNR: nav_cookie_kalkulation.get("current_profitcenter"), Jahr: formPanel.getForm().findField("Jahr").getValue(), CNR: selectedId, field: 'CNR,Version', table: 'kalkulationsversion' }, success: function(form, action) { var jsonData = "["; for (i = 0; i < storeKalkulationen.getCount(); i++) { record = storeKalkulationen.getAt(i); record.data.CNR = selectedId; record.data.Version = formPanel.getForm().findField("Version").getValue(); jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'api.php?a=newKNR', params: { cnr: selectedId, //formPanel.getForm().findField('CNR').getValue(), version: formPanel.getForm().findField('Version').getValue() } }); Ext.Ajax.request({ url: 'api.php?a=copyVersionDaten', params: { cnr: selectedId, new_version: formPanel.getForm().findField('Version').getValue(), old_version: current_version }, success: function() { Ext.Ajax.request({ waitMsg: 'Bitte warten...', url: 'io.php?type=grid', params: { data: jsonData, key: 'CNR,KNR,Version', table: 'k_daten' }, success: function(form, action) { edit_product_win.close(); kalkulation_win.close(); MainKalkulationenGrid.store.reload(); InfoMessage('Die Änderungen wurden gespeichert'); } }); edit_product_win.destroy(); } }); } }); } } }, { text: 'Abbrechen', iconCls: 'icon-cross', handler: function() { edit_product_win.destroy(); } }] }); edit_product_win.show(); } //var storeKalkulationenGrid = new Ext.data.Store(); var KalkulationenGridcm = new Ext.grid.ColumnModel([{ id: 'KNR', header: "KNR", dataIndex: 'KNR', hidden: true, width: 40, sortable: false }, { id: 'Formel', width: 40, header: "Formel", dataIndex: 'Formel', hidden: true, sortable: false }, { id: 'Sign', width: 25, header: "", dataIndex: 'Sign', sortable: false }, { id: 'KontoName', header: "Konto", dataIndex: 'KontoName', width: 260, sortable: false }, { id: 'Betrag', header: "Betrag", dataIndex: 'Betrag', renderer: betragRenderer, align: 'right', sortable: false, editor: new Ext.form.NumberField({ allowBlank: false, decimalSeparator: ',' }) }, { id: 'Einzelpreis', header: "Einzelpreis", dataIndex: 'Einzelpreis', align: 'right', sortable: false, renderer: einzelpreisRenderer }]); KalkulationenGridcm.isCellEditable = function(colIndex, rowIndex) { var record = storeKalkulationen.getAt(rowIndex); if (record.get('Eingabe') == 0) { return false; } return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, colIndex, rowIndex); }; var KalkulationenGrid = new Ext.grid.EditorGridPanel({ store: storeKalkulationen, cm: KalkulationenGridcm, viewConfig: gridViewKalk, clicksToEdit: 1, stripeRows: true, header: false, border: false, autoWidth: true, listeners: { render: function() { this.store.load({ params: { cid: selectedId, version: current_version } }); } } }); function saveCurrentCalculation() { ErgebnissePanel.getEl().mask('Die Kalkulation wird gespeichert. Bitte warten...'); var a = storeKalkulationen.data.items; var b = 'Betrag'; a[storeKalkulationen.indexOfId('10200')].data[b] /= 100; a[storeKalkulationen.indexOfId('10700')].data[b] /= 100; a[storeKalkulationen.indexOfId('21000')].data[b] /= 100; var jsonData = "["; for (i = 0; i < storeKalkulationen.getCount(); i++) { record = storeKalkulationen.getAt(i); // PATCH FOR NEW OR DIRTY VERSIONS AND CALCULATIONS if (!record.data.CNR) { record.data.CNR = selectedId; } if (!record.data.Version) { record.data.Version = current_version; } // PATCH.END jsonData += Ext.util.JSON.encode(record.data) + ","; } jsonData = jsonData.substring(0, jsonData.length - 1) + "]"; Ext.Ajax.request({ url: 'io.php?type=grid&_SAVE_CURRENT_CALCULATION', params: { data: jsonData, key: 'CNR,KNR,Version', table: 'k_daten' }, success: function(response) { //var obj = ; if (Ext.decode(response.responseText).success == true) { ErgebnissePanel.getEl().unmask(); InfoMessage('Die Änderungen wurden gespeichert'); } else { xErrorMessage({ title: 'Produktkalkulation', text: 'Fehler beim Speichern. ' + response.responseText }); } } }); } var ErgebnissePanel = new Ext.Panel({ title: 'Kalkulationen', id: 'Kalkulationen-panel', collapsible: false, layout: 'fit', tbar: [{ text: 'Neu berechnen', iconCls: 'icon-calculator', handler: function() { var a = storeKalkulationen.data.items; var b = 'Betrag'; if (a[storeKalkulationen.indexOfId('20000')].data[b] <= 0) { Ext.MessageBox.alert('Fehler', 'Bitte Stückzahl > 0 eingeben!'); } else { calculate(); } } }, { text: 'Speichern', iconCls: 'icon-save-table', handler: saveCurrentCalculation }, { text: 'Als NEUE Version Speichern', iconCls: 'icon-save-table', handler: function() { Save_As(selectedId); storeKalkulationen.reload(); } }], items: [KalkulationenGrid] }); var anlagen = Anlagen(selectedId); var personal = Personal(selectedId); var breakeven = BreakEven(selectedId); var material = Material(selectedId); var kalkTabs = new Ext.TabPanel({ activeTab: 0, border: false, layoutOnTabChange: true, items: [ErgebnissePanel, material, personal, anlagen, breakeven] }); var kalkulation_win = new Ext.Window({ layout: 'fit', id: 'product-' + selectedId, margins: '5 5 5 5', title: current_produkt + ' : ' + current_version, width: 633, height: 550, resizable: true, maximizable: true, items: kalkTabs }); kalkulation_win.show(); } var KalkulationenTabs = new Ext.TabPanel({ activeTab: 0, frame: false, border: false, items: [MainKalkulationenGrid, Personal_StundensaetzeGrid, Anlagen_StundensaetzeGrid] }); var KalkulationenPanel = new Ext.Panel({ title: 'Produktkalkulationen', id: 'Produktkalkulation-panel', iconCls: 'icon-calculator', deferredRender: false, collapsible: false, layout: 'fit', border: false, tbar: ['ProfitCenter : ', ' ', ProfitCenter_dropdown, ' ', 'Jahr : ', ' ', Year_dropdown], items: KalkulationenTabs }); // --- PUBLIC EVENTS .START --- /// MainKalkulationenGrid.on('render', function() { MainKalkulationenGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") } }); }); Personal_StundensaetzeGrid.on('render', function() { Personal_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); }); Anlagen_StundensaetzeGrid.on('render', function() { Anlagen_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); }); ProfitCenter_dropdown.on('collapse', function(combo) { nav_cookie_kalkulation.set("current_profitcenter", combo.getValue()); MainKalkulationenGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") } }); Personal_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); Anlagen_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); }); Year_dropdown.on('collapse', function(combo) { nav_cookie_kalkulation.set("current_year", combo.getValue()); MainKalkulationenGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter") } }); Personal_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); Anlagen_StundensaetzeGrid.store.load({ params: { year: nav_cookie_kalkulation.get("current_year"), profitcenter: nav_cookie_kalkulation.get("current_profitcenter"), start: 0, limit: 20 } }); }); // -- PUBLIC EVENTS.END -- // return { returnGrid: function() { return KalkulationenPanel; } }; }; var fusion; Ext.lib.Ajax.forceActiveX = true; oc.GrafikenGridPanel = function(item) { var getTools = function() { return [ /*{ id: 'gear', handler: function(e, t, p) { p.refreshMedia(); }, qtip: { text: 'Refresh the Chart' } }, */ { id: 'print', handler: function(e, t, p) { p.chart.print(); }, qtip: { text: 'Drucken...' } }]; }; function MaterialKosten() { MaterialKostenPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, autoScroll: false, title: 'Materialkosten', floating: false, fusionCfg: { id: 'chart1' }, id: 'MaterialKostenPanel', chartURL: 'fusioncharts/StackedColumn3D.swf', dataURL: 'x.php?t=material', layout: 'fit', tools: getTools() }); return { getPanel: function() { return MaterialKostenPanel; }, resetData: Ext.emptyFn } } function Bilianzergebnis() { BilanzergebnisPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, title: 'Bilanzergebnis', floating: false, fusionCfg: { id: 'chart2' }, autoScroll: false, id: 'BilianzergebnisPanel', chartURL: 'fusioncharts/StackedColumn3D.swf', dataURL: 'x.php?t=bilianzergebnis', tools: getTools() }); return { getPanel: function() { return BilanzergebnisPanel; }, resetData: Ext.emptyFn } } function Gesamtkosten() { GesamtkostenPanel = new Ext.ux.Chart.Fusion.Panel({ title: 'Gemeinkosten', header: true, border: false, floating: false, fusionCfg: { id: 'chart3' }, autoScroll: false, id: 'GesamtkostenPanel', chartURL: 'fusioncharts/StackedColumn3D.swf', dataURL: 'x.php?t=gesamtkosten', tools: getTools() }); return { getPanel: function() { return GesamtkostenPanel; }, resetData: Ext.emptyFn } } function Gesamtleistung() { GesamtleistungPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, title: 'Gesamtleistung', header: true, floating: false, fusionCfg: { id: 'chart4' }, autoScroll: false, id: 'GesamtleistungPanel', chartURL: 'fusioncharts/StackedColumn3D.swf', dataURL: 'x.php?t=gesamtleistung', tools: getTools() }); return { getPanel: function() { return GesamtleistungPanel; }, resetData: Ext.emptyFn } } function Personalkosten() { /* var selectKonto = new Ext.form.ComboBox({ listeners: { render: function(){ // console.log('render'); selectKonto.setValue('GuV'); }, collapse: function(combo){ PersonalkostenPanel.setChartDataURL('x.php?t=personalkosten&Konto=' + combo.getValue()); //console.log(PersonalkostenPanel.dataURL); //PersonalkostenPanel.load(); //PersonalkostenPanel.refreshMedia(); } }, typeAhead: false, editable: false, mode: 'local', triggerAction: 'all', store: new Ext.data.SimpleStore({ data: [['GuV', 'GuV'], ['Plan', 'PlanGuV'], ['JAB', '13'], ['HoRe', 'HoRe'], ['Summe', 'IstBWA']], autoLoad: true, fields: [{ name: 'name' }, { name: 'value' }], id: 1 }), //value: 1, displayField: 'name', valueField: 'value' }); */ var PersonalkostenPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, /* tbar: [selectKonto], */ title: 'Personalkosten', floating: false, fusionCfg: { id: 'chart9' }, autoScroll: false, id: 'PersonalkostenPanel', chartURL: 'fusioncharts/StackedColumn3D.swf', baseDataURL: this.dataURL, dataURL: 'x.php?t=personalkosten', tools: getTools() }); return { getPanel: function() { return PersonalkostenPanel; }, resetData: Ext.emptyFn } } function Verteilung() { function reloadCharts(year, knr) { if (!year) year = nav_cookie_ergebnisse.get("current_year"); if (!knr) knr = 82000; params = '&year=' + year + '&knr=' + knr; VerteilungPanel.setChartDataURL('x.php?t=erg_verteilung' + params); //VerteilungPanel.refreshMedia(); } arrayColumn = new Array(); arrayColumn.push([82000, 'Umsatzerlöse']); arrayColumn.push([90200, 'Personalkosten']); arrayColumn.push([90300, 'Materialkosten']); arrayColumn.push([90100, 'Gesamtleistung']); arrayColumn.push([90400, 'Gemeinkosten']); arrayColumn.push([99990, 'Bilanzleistung']); comboboxStore = new Ext.data.SimpleStore({ fields: ['id', 'display'], data: arrayColumn }); KNR_edit = new Ext.form.ComboBox({ store: comboboxStore, mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false, listeners: { render: function() { KNR_edit.setValue('82000'); }, collapse: function(combo) { reloadCharts(Year_dropdown.getValue(), combo.getValue()); } } }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal&pc=0' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ listeners: { render: function() { this.getStore().load({ callback: function(store) { rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, collapse: function(combo) { reloadCharts(combo.getValue(), KNR_edit.getValue()); } }, name: 'Year', typeAhead: false, editable: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var VerteilungPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, title: 'Verteilung', tbar: [' Jahr : ', Year_dropdown, '-', 'Konto : ', KNR_edit], header: true, floating: false, fusionCfg: { id: 'chart5' }, autoScroll: false, id: 'VerteilungPanel', chartURL: 'fusioncharts/Pie3D.swf', dataURL: 'x.php?t=erg_verteilung&year=' + nav_cookie_ergebnisse.get("current_year") + '&knr=82000', tools: getTools() }); return { getPanel: function() { return VerteilungPanel; }, resetData: function() { Year_dropdown.setValue(nav_cookie_ergebnisse.get("current_year")); KNR_edit.setValue(82000); } } } function PK() { function reloadCharts(year, profitcenter) { if (!year) year = nav_cookie_ergebnisse.get("current_year"); if (!profitcenter) knr = 0; params = '&year=' + year + '&profitcenter=' + profitcenter; PKPanel.setChartDataURL('x.php?t=erg_pk' + params); //PKPanel.refreshMedia(); } var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=anlagen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ listeners: { beforequery: function(combo) { this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; }, render: function() { this.getStore().load({ callback: function(store) { rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, collapse: function(combo) { reloadCharts(combo.getValue(), ProfitCenter_dropdown.getValue()); } }, value: nav_cookie_ergebnisse.get("current_year"), name: 'Year', typeAhead: false, editable: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var storeProfitCenter_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=anlagen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function() { this.getStore().load({ callback: function(store) { rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo) { this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; }, collapse: function(combo) { reloadCharts(Year_dropdown.getValue(), combo.getValue()); } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var PKPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, title: 'Produkte', tbar: ['Profitcenter: ', ProfitCenter_dropdown, '-', 'Jahr : ', Year_dropdown], header: true, floating: false, fusionCfg: { id: 'chart7' }, autoScroll: false, id: 'PKPanel', chartURL: 'fusioncharts/Pie3D.swf', dataURL: 'x.php?t=erg_pk&year=' + nav_cookie_ergebnisse.get("current_year") + '&profitcenter=0', tools: getTools() }); return { getPanel: function() { return PKPanel; }, resetData: function() { Year_dropdown.setValue(nav_cookie_ergebnisse.get("current_year")); ProfitCenter_dropdown.setValue(0); } } } function Dif() { function reloadCharts(year, profitcenter) { if (!year) year = nav_cookie_ergebnisse.get("current_year"); if (!profitcenter) knr = 0; params = '&year=' + year + '&profitcenter=' + profitcenter; PKPanel.setChartDataURL('x.php?t=erg_dif' + params); //PKPanel.refreshMedia(); } var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=anlagen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ listeners: { beforequery: function(combo) { this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; }, render: function() { this.getStore().load({ callback: function(store) { rec = Year_dropdown.getStore().getById(nav_cookie_personal.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, collapse: function(combo) { reloadCharts(combo.getValue(), ProfitCenter_dropdown.getValue()); } }, value: nav_cookie_ergebnisse.get("current_year"), name: 'Year', typeAhead: false, editable: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var storeProfitCenter_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=anlagen' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function() { this.getStore().load({ callback: function(store) { rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo) { this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; }, collapse: function(combo) { reloadCharts(Year_dropdown.getValue(), combo.getValue()); } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); PKPanel = new Ext.ux.Chart.Fusion.Panel({ border: false, title: 'Prozentuale Differenz', tbar: ['Profitcenter: ', ProfitCenter_dropdown, '-', 'Jahr : ', Year_dropdown], header: true, floating: false, fusionCfg: { id: 'chart8' }, autoScroll: false, id: 'DifPanel', chartURL: 'fusioncharts/Pie3D.swf', dataURL: 'x.php?t=erg_dif&year=' + nav_cookie_ergebnisse.get("current_year") + '&profitcenter=0', tools: getTools() }); return { getPanel: function() { return PKPanel; }, resetData: function() { Year_dropdown.setValue(nav_cookie_ergebnisse.get("current_year")); ProfitCenter_dropdown.setValue(0); } } } var Personalkosten = Personalkosten(); var MaterialKosten = MaterialKosten(); var Bilianzergebnis = Bilianzergebnis(); var Gesamtkosten = Gesamtkosten(); var Gesamtleistung = Gesamtleistung(); var Verteilung = Verteilung(); var PK = PK(); var Dif = Dif(); function EmptyPanel(item) { panel = new Ext.Panel({ title: item.getPanel().title, collapsible: false, layout: 'fit', items: item.getPanel(), listeners: { show: function() { if(!Ext.isIE){ item.resetData(); } }, resize: function() { item.resetData(); } } }); item.getPanel().setTitle(''); return panel; } var GrafikenTabs = new Ext.TabPanel({ activeTab: 0, border: false, items: [EmptyPanel(Gesamtleistung), EmptyPanel(Personalkosten), EmptyPanel(MaterialKosten), EmptyPanel(Bilianzergebnis), EmptyPanel(Gesamtkosten), EmptyPanel(Verteilung), EmptyPanel(PK), EmptyPanel(Dif)] }); GrafikenPanel = new Ext.Panel({ title: 'Ergebnisse', id: 'Ergebnis-panel', iconCls: 'icon-chart', margins: '0 4 4 0', border: false, layout: 'fit', items: GrafikenTabs, listeners: { beforeshow: function() { if (Ext.isGecko && GrafikenTabs.getActiveTab()) { Verteilung.resetData(); PK.resetData(); Dif.resetData(); } } } }); return { returnGrid: function() { return GrafikenPanel; } }; }; oc.MonatsGridPanel = function(item) { nav_cookie_monatsvergleich.set("current_year", plan_current); nav_cookie_monatsvergleich.set("von", 1); nav_cookie_monatsvergleich.set("bis", 12); function reloadCharts() { params = '&year=' + nav_cookie_monatsvergleich.get("current_year") + '&profitcenter=' + nav_cookie_monatsvergleich.get("current_profitcenter") + '&von=' + nav_cookie_monatsvergleich.get("von") + '&bis=' + nav_cookie_monatsvergleich.get("bis"); MaterialKostenPanel.setChartDataURL('x.php?t=erg_material' + params); //MaterialKostenPanel.refreshMedia(); PersonalkostenPanel.setChartDataURL('x.php?t=erg_personal' + params); //PersonalkostenPanel.refreshMedia(); GemeinkostenPanel.setChartDataURL('x.php?t=erg_gemeinkosten' + params); //GemeinkostenPanel.refreshMedia(); ErgebnissePanel.setChartDataURL('x.php?t=erg' + params); //ErgebnissePanel.refreshMedia(); } arrayColumn = new Array(); for (monat = 0; monat < 12; monat++) { arrayColumn.push([(monat), Date.getShortMonthName(monat)]); } comboboxStore = new Ext.data.SimpleStore({ fields: ['id', 'display'], data: arrayColumn }); var von = new Ext.form.ComboBox({ //id: 'von', store: comboboxStore, mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false, listeners: { collapse: function(combo) { nav_cookie_monatsvergleich.set("von", Number(combo.getValue() + 1)); reloadCharts(); }, render: function() { von.setValue('0'); } } }); var bis = new Ext.form.ComboBox({ //id: 'bis', store: comboboxStore, mode: 'local', displayField: 'display', valueField: 'id', width: 150, triggerAction: 'all', editable: false, listeners: { collapse: function(combo) { nav_cookie_monatsvergleich.set("bis", Number(combo.getValue() + 1)); reloadCharts(); }, render: function() { bis.setValue('11'); } } }); var storeProfitCenter_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=list&t=profitcenter&type=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'PCNR' }, { name: 'ProfitCenter' }]) }); var ProfitCenter_dropdown = new Ext.form.ComboBox({ forceSelection: true, listeners: { render: function() { this.getStore().load({ callback: function(store) { rec = ProfitCenter_dropdown.getStore().getAt(0); ProfitCenter_dropdown.selectByValue(rec.get('ProfitCenter')); ProfitCenter_dropdown.setValue(rec.get('PCNR')); } }); }, beforequery: function(combo) { this.store.reload({ params: { year: Year_dropdown.getValue() } }); return false; }, collapse: function(combo) { nav_cookie_monatsvergleich.set("current_profitcenter", combo.getValue()); reloadCharts(); } }, name: 'ProfitCenter', typeAhead: false, editable: false, store: storeProfitCenter_dropdown, displayField: 'ProfitCenter', valueField: 'PCNR', mode: 'remote' }); var storeYear_dropdown = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'api.php?a=tabs&t=personal' }), reader: new Ext.data.JsonReader({ root: 'data' }, [{ name: 'title' }, { name: 'id' }]) }); var Year_dropdown = new Ext.form.ComboBox({ listeners: { beforequery: function(combo) { this.store.reload({ params: { pc: ProfitCenter_dropdown.getValue() } }); return false; }, render: function() { this.getStore().load({ callback: function(store) { rec = Year_dropdown.getStore().getById(nav_cookie_monatsvergleich.get("current_year")); Year_dropdown.setValue(rec.get('id')); } }); }, collapse: function(combo) { nav_cookie_monatsvergleich.set("current_year", combo.getValue()); reloadCharts(); } }, name: 'Year', typeAhead: false, editable: false, triggerAction: 'all', store: storeYear_dropdown, displayField: 'title', valueField: 'id' }); var getTools = function() { return [{ id: 'print', handler: function(e, t, p) { p.chart.print(); }, qtip: { text: 'Drucken...' } }]; }; function MaterialKosten() { MaterialKostenPanel = new Ext.ux.Chart.Fusion.Panel({ autoScroll: false, title: 'Materialkosten', floating: false, fusionCfg: { id: 'chart12' }, chartURL: 'fusioncharts/MSColumn3D.swf', dataURL: 'x.php?t=erg_material&year=' + nav_cookie_monatsvergleich.get("current_year") + '&profitcenter=' + nav_cookie_monatsvergleich.get("current_profitcenter") + '&von=1&bis=12', tools: getTools() }); return MaterialKostenPanel; } function Personalkosten() { PersonalkostenPanel = new Ext.ux.Chart.Fusion.Panel({ title: 'Personalkosten', floating: false, fusionCfg: { id: 'chart15' }, autoScroll: false, id: 'PersonalkostenPanel_', chartURL: 'fusioncharts/MSColumn3D.swf', dataURL: 'x.php?t=erg_personal&year=' + nav_cookie_monatsvergleich.get("current_year") + '&profitcenter=' + nav_cookie_monatsvergleich.get("current_profitcenter") + '&von=1&bis=12', tools: getTools() }); return PersonalkostenPanel; } function Gemeinkosten() { GemeinkostenPanel = new Ext.ux.Chart.Fusion.Panel({ title: 'Gemeinkosten', floating: false, fusionCfg: { id: 'chart16' }, autoScroll: false, id: 'GemeinkostenPanel', chartURL: 'fusioncharts/MSColumn3D.swf', dataURL: 'x.php?t=erg_gemeinkosten&year=' + nav_cookie_monatsvergleich.get("current_year") + '&profitcenter=' + nav_cookie_monatsvergleich.get("current_profitcenter") + '&von=1&bis=12', tools: getTools() }); return GemeinkostenPanel; } function Ergebnisse() { ErgebnissePanel = new Ext.ux.Chart.Fusion.Panel({ title: 'Ergebnisse', floating: false, fusionCfg: { id: 'char17' }, autoScroll: false, id: 'ErgebnissePanel', chartURL: 'fusioncharts/MSColumn3D.swf', dataURL: 'x.php?t=erg&year=' + nav_cookie_monatsvergleich.get("current_year") + '&profitcenter=' + nav_cookie_monatsvergleich.get("current_profitcenter") + '&von=1&bis=12', tools: getTools() }); return ErgebnissePanel; } function resetData() { Year_dropdown.setValue(plan_current); ProfitCenter_dropdown.setValue(0); von.setValue(0); bis.setValue(11); } function EmptyPanel(item) { panel = new Ext.Panel({ title: item.title, collapsible: false, layout: 'fit', items: item, listeners: { show: function() { if(!Ext.isIE){ resetData(); } }, resize: function() { resetData(); } } }); item.setTitle(''); return panel; } var MonatsTabs = new Ext.TabPanel({ activeTab: 0, border: false, frame: false, items: [EmptyPanel(Ergebnisse()), EmptyPanel(Personalkosten()), EmptyPanel(MaterialKosten()), EmptyPanel(Gemeinkosten())] }); MonatsPanel = new Ext.Panel({ title: 'Monatsvergleich', id: 'Monatsvergleich-panel', iconCls: 'icon-coins', tbar: ['ProfitCenter : ', ProfitCenter_dropdown, ' Jahr: ', Year_dropdown, ' ', 'Von : ', von, ' ', ' Bis: ', bis], margins: '0 4 4 0', border: false, layout: 'fit', frame: false, items: MonatsTabs, listeners: { beforeshow: function() { if (Ext.isGecko) { resetData(); } } } }); return { returnGrid: function() { return MonatsPanel; } }; }; /** * @author: Angel Dimitrov * @author: Darin Kolev * http://www.sourcestream.de */ /** * Main menu * * @param {String} region */ oc.menuPanel = function(region){ // private variables var treePanel = new Ext.tree.TreePanel({ region: region, id: 'west-panel', title: oc_titel+ '
' + oc_zustand, tbar: ['->', { text: 'Abmelden', iconCls: 'door-out', handler: function(){ function logout(btn){ if (btn == 'ok') { eval("parent.location = ''"); } } Ext.MessageBox.show({ title: 'Bestätigung', msg: 'Möchten Sie sich wirklich abmelden?', width: 400, icon: Ext.MessageBox.QUESTION, buttons: Ext.MessageBox.OKCANCEL, fn: logout }); } }], bbar:['->', { text: 'Version 1.2.1' }], split: true, width: 200, minSize: 175, maxSize: 400, collapsible: true, xtype: 'treepanel', autoScroll: true, loader: new Ext.tree.TreeLoader(), root: new Ext.tree.AsyncTreeNode({ expanded: true, children: [{ text: 'Operatives Controlling', leaf: false, expanded: true, children: [{ text: 'Personal', leaf: true, id: 'Personal', iconCls: 'icon-user-suit' }, { text: 'Anlagen', leaf: true, id: 'Anlagen', iconCls: 'icon-house' }, { text: 'Material', leaf: true, id: 'Material', iconCls: 'icon-cart' }, { text: 'Ergebnisse', id: 'Ergebnisse', leaf: true, iconCls: 'icon-pencil' }, { text: 'Produktkalkulation', leaf: true, id: 'Produktkalkulation', iconCls: 'icon-calculator' }, { text: 'Grafiken', leaf: false, expanded: true, children: [{ text: 'Ergebnis', leaf: true, id: 'Ergebnis', iconCls: 'icon-chart' }, { text: 'Monatsvergleich', leaf: true, id: 'Monatsvergleich', iconCls: 'icon-coins' }] }, { text: 'Einstellungen', id: 'Parameter', iconCls: 'icon-wrench-orange', leaf: true, disabled: ((user_level == 0) ? true : false) }] }] }), rootVisible: false, listeners: { click: function(n){ if (n.disabled) { InfoMessage('Sie haben keine Rechte in dem Modul', 'Einstellungen'); return false; } var sn = this.selModel.selNode || {}; // selNode is null on initial selection if (n.leaf && n.text != sn.text) { // ignore clicks on folders and currently selected node try { Ext.getCmp('main-panel').layout.setActiveItem(n.id + '-panel'); } catch (err) { //alert(err.description); } } } } }); return { // public methods init: function(){ return treePanel; } }; }; oc.mainPanel = function(region){ // private variables a = oc.MaterialGridPanel(); b = oc.PersonalPanel(); c = oc.AnlagenGridPanel(); e = oc.Parameter(); f = oc.ErgebnissePanel(); g = oc.ProductkalkulationPanel(); h = oc.GrafikenGridPanel(); k = oc.MonatsGridPanel(); var logo_panel = new Ext.Panel({ id: 'logo_panel', html: "
" }); var tabPanel = new Ext.Panel({ id: 'main-panel', region: region, layout: 'card', style: 'margin:auto', defaults: { // applied to each contained panel hideMode: 'offsets', border: false }, layoutConfig:{ deferredRender: true }, autoScroll: true, margins: '0 4 4 0', activeItem: 'logo_panel', items: [logo_panel, a.returnGrid(), b.returnGrid(), c.returnGrid(), e.returnGrid(), f.returnGrid(), g.returnGrid(), h.returnGrid(), k.returnGrid()] }); return { // public methods init: function(){ return tabPanel; } }; }; oc.limit_records = 50; // create application oc.app = function(){ // public space return { // public properties, e.g. strings to translate // public methods init: function(){ // Define all common vars from the parameter store.START // Global values plan_current = Number(Parameter('Planjahr')); plan_von = Number(Parameter('ErstesPlanjahr')) - Number(Parameter('HistorischeJahre')); plan_bis = Number(Parameter('Planjahr')) + Number(Parameter('Planjahre')); kalk_linear = Parameter('LineareKalkulation'); oc_titel = Parameter('Titel'); oc_zustand = Parameter('Zustand')?Parameter('Zustand'):''; // Planung plan_monat = Parameter('Planmonat'); plan_monat_hochrechnung = Parameter('ErsterMonatHoRe'); plan_erster_monat = Parameter('ErsterMonat'); // Personal Fehlzeiten / Labels dFZ1_label = psd_fehlzeitarten(1, 'Fehlzeit'); dFZ2_label = psd_fehlzeitarten(2, 'Fehlzeit'); dFZ3_label = psd_fehlzeitarten(3, 'Fehlzeit'); dFZ4_label = psd_fehlzeitarten(4, 'Fehlzeit'); // Personal Fehlzeiten / Values dFZ1_value = psd_fehlzeitarten(1, 'Default_1'); dFZ2_value = psd_fehlzeitarten(2, 'Default_1'); dFZ3_value = psd_fehlzeitarten(3, 'Default_1'); dFZ4_value = psd_fehlzeitarten(4, 'Default_1'); // Personal Kostenarten / Labels dSK1_label = psd_kostenarten(1); dSK2_label = psd_kostenarten(2); dSK3_label = psd_kostenarten(3); defaultProfitCenter = pcStore.data.items[0].data.ProfitCenter; // Define all common vars from the parameter store.END tp = oc.menuPanel('west'); mp = oc.mainPanel('center'); viewport = new Ext.Viewport({ layout: 'border', items: [tp.init(), mp.init()] }); } }; }(); // end of app