/**
* @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('"),
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