Ext.ns("Ext.ux.renderer"); Ext.ux.renderer.ComboRenderer = function(options) { var value = options.value; var combo = options.combo; var returnValue = value; var valueField = combo.valueField; var idx = combo.store.findBy(function(record) { if(record.get(valueField) == value) { returnValue = record.get(combo.displayField); return true; } }); return returnValue; }; Ext.ux.renderer.Combo = function(combo) { return function(value, meta, record) { return Ext.ux.renderer.ComboRenderer({value: value, meta: meta, record: record, combo: combo}); }; } Ext.onReady(function(){ Ext.QuickTips.init(); var sw = document.getElementById('CompanyName').parentNode.clientWidth-6; if (document.getElementById('FullName')) { var fn = new Ext.form.TextField({ width: sw, msgTarget: 'nerr', applyTo:'FullName', allowBlank: false }); var amail = new Ext.form.TextField({ width: sw, applyTo:'AdminEmail', vtype: 'email', msgTarget: 'merr', allowBlank: false, listeners: { blur: function(fld) { if (fld.getValue()!='') Ext.Ajax.request({url: 'dataAdapter/?checkregister', success: function(response, opts) { var chk = Ext.decode(response.responseText); if (chk.error) { fld.markInvalid(chk.msg); } }, params: {AdminEmail: fld.getValue()} }); } } }); var un = new Ext.form.TextField({ width: sw, applyTo:'username', msgTarget: 'uerr', allowBlank: false, listeners: { blur: function(fld) { if (fld.getValue()!='') Ext.Ajax.request({url: 'dataAdapter/?checkregister', success: function(response, opts) { var chk = Ext.decode(response.responseText); if (chk.error) { fld.markInvalid(chk.msg); } }, params: {username: fld.getValue()} }); } } }); var p1 = new Ext.form.TextField({ width: sw, allowBlank: false, applyTo:'Password1', msgTarget: 'perr1', inputType: 'password', validator: function() { if (p1 && p2) { if (p1.getValue()!=p2.getValue()) return "Паролата и потвърждението не съвпадат!"; p1.clearInvalid(); p2.clearInvalid(); var pass = p1.getValue(); if (pass.length<4) return "Паролата трябва да е минимум 4 символа!"; p1.clearInvalid(); p2.clearInvalid(); } return true; } }); var p2 = new Ext.form.TextField({ width: sw, applyTo:'Password2', msgTarget: 'perr2', inputType: 'password', allowBlank: false, validator: function() { if (p1 && p2) { if (p1.getValue()!=p2.getValue()) return "Паролата и потвърждението не съвпадат!"; p1.clearInvalid(); p2.clearInvalid(); var pass = p2.getValue(); if (pass.length<4) return "Паролата трябва да е минимум 4 символа!"; p1.clearInvalid(); p2.clearInvalid(); } return true; } }); } var cmp = new Ext.form.TextField({width: sw, msgTarget: 'cerr', allowBlank: false, applyTo:'CompanyName'}); var eik = new Ext.form.TextField({ width: sw, msgTarget: 'eikerr', allowBlank: false, applyTo:'Bulstat', validator: function(fld) { if (!validateid(fld)) { document.getElementById('companylogo').style.display='none'; return "Невалиден идентификационен номер (ЕИК,булстат,ЕГН,ЕНЧ)"; } Ext.Ajax.request({url: 'dataAdapter/?checkregister', success: function(response, opts) { var chk = Ext.decode(response.responseText); if (chk.error) { eik.markInvalid(chk.msg); } }, params: {eik: fld} }); document.getElementById('companylogo').style.display=''; return true; } }); var vat = new Ext.form.TextField({width: sw, msgTarget: 'verr',allowBlank: true, applyTo:'VatId'}); var city = new Ext.form.TextField({width: sw, msgTarget: 'cityerr',allowBlank: false, applyTo:'CityName'}); var addr = new Ext.form.TextField({width: sw, msgTarget: 'aderr',allowBlank: false, applyTo:'Address'}); var mail = new Ext.form.TextField({width: sw, msgTarget: 'emerr',allowBlank: false, applyTo:'Email', vtype: 'email'}); var phone = new Ext.form.TextField({width: sw, msgTarget: 'perr',allowBlank: true, applyTo:'Phones'}); var dsBankList = new Ext.data.Store({ id: 'dsBankListNom',idProperty:'bic',proxy: new Ext.data.ScriptTagProxy({url: 'dataAdapter/nomAdapter.php?banks'}), reader: new Ext.data.JsonReader({root: 'data'},[{name:'id', type:'int'},{name: 'bic', type: 'string'},{name: 'bankname', type: 'string'},{name: 'accdefault',type:'boolean'}]), }); dsBankList.load(); var dsBankStore = new Ext.data.Store({ id: 'dsBank', autoLoad: true, batch: true, baseParams: { CompanyID: 0, ProfileID: 0 }, proxy: new Ext.data.HttpProxy({ api: { create:'dataAdapter/nomAdapter.php?companyaccountcreate', read: 'dataAdapter/nomAdapter.php?companyaccountread', update: 'dataAdapter/nomAdapter.php?companyaccountupdate', destroy: 'dataAdapter/nomAdapter.php?companyaccountdestroy' } }), reader: new Ext.data.JsonReader({ totalProperty: 'total', successProperty: 'success', idProperty: 'id', root: 'data', messageProperty: 'message' // <-- New "messageProperty" meta-data }, [ {name: 'id'}, {name: 'accountname'}, {name: 'bic'}, {name: 'iban'}, {name: 'accdefault', type: 'boolean'} ]), writer: new Ext.data.JsonWriter({ successProperty: 'success', idProperty: 'id', messageProperty: 'message', encode: true, writeAllFields: true }), autoSave: false, listeners: { load: function(store) { document.getElementById("BankMaxRow").value=parseInt(-store.getTotalCount()); } } }); var BankEditorGrid = new Ext.grid.EditorGridPanel({ applyTo: 'BankAccountsTable', id: 'bankaccountgridpanel', store: dsBankStore, border: false, frame: false, selModel: new Ext.grid.RowSelectionModel(), clicksToEdit: 'auto', height: 120, width: sw, columns: [ { id: 'bankaccountiban', header: 'Банкова сметка (IBAN)', dataIndex: 'iban', width: 150, sortable: true , editor: new Ext.form.TextField({}) }, { id: 'bankaccountbic', header: 'Банков код (BIC)', dataIndex: 'bic', width: 100, sortable: true , editor: new Ext.form.TextField({}) }, { id: 'bankname', width: 150, header: 'Наименование', dataIndex: 'accountname', sortable: true, editor: new Ext.form.TextField({}) }, { id: 'accountdefault', width: 100, xtype: 'checkcolumn', header: 'по подразбиране', dataIndex: 'accdefault' } ], bbar: [{ text: 'Нова', handler: function(btn, ev) { if (parseInt(document.getElementById('accountslimit').value)==0 || dsBankStore.getCount()0) { var bicpart = ibancode.substr(4,4); if (bicpart!='BNBG') { var bicpart2 = 'BGSF'; if (bicpart=='BNPA') bicpart2 = 'BGSX'; if (bicpart=='TTBB') bicpart2 = 'BG22'; e.record.set('bic', bicpart+bicpart2 ); var i = dsBankList.findExact('bic',bicpart+bicpart2); if (i>=0) e.record.set('accountname',dsBankList.getAt((i)).get('bankname')); } } } if (e.field=='bic') { var i = dsBankList.findExact('bic',e.value); if (i>=0) e.record.set('accountname',dsBankList.getAt((i)).get('bankname')); } }); BankEditorGrid.on('oncheckcolumnclick', function(grd,row,col,e) { grd.getStore().each(function(record) { record.set('accdefault',false); }); grd.getStore().getAt(row).set('accdefault',true); }); var dsBranchStore = new Ext.data.Store({ id: 'dsBranch', autoLoad: true, batch: true, baseParams: { CompanyID: document.getElementById('CompanyID').value, ProfileID: document.getElementById("ProfileID").value }, proxy: new Ext.data.HttpProxy({ api: { create:'dataAdapter/nomAdapter.php?branchcreate', read: 'dataAdapter/nomAdapter.php?branchread', update: 'dataAdapter/nomAdapter.php?branchupdate', destroy: 'dataAdapter/nomAdapter.php?branchdestroy' } }), reader: new Ext.data.JsonReader({ totalProperty: 'total', successProperty: 'success', idProperty: 'id', root: 'data', messageProperty: 'message' // <-- New "messageProperty" meta-data }, [ {name: 'id'}, {name: 'branchname'}, {name: 'city'}, {name: 'address'}, {name: 'email'}, {name: 'taxid'} ]), writer: new Ext.data.JsonWriter({ encode: true, writeAllFields: true }), autoSave: false, listeners: { load: function(store) { document.getElementById("BranchMaxRow").value=-parseInt(store.getTotalCount()); }, loadexception: function(a,b,c,d,e) { //alert('exception'); } } }); var cityCombo = new Ext.form.ComboBox({ store: new Ext.data.Store({ autoLoad: true, proxy: new Ext.data.ScriptTagProxy({url: 'dataAdapter/?citynom'}), reader: new Ext.data.JsonReader({ root: 'topics', id: 'citynom' }, [ {name: 'id', type: 'int', mapping: 'id'}, {name: 'title', type: 'string', mapping: 'title'} ] ), listeners: { load: function() { BranchEditorGrid.getView().refresh(); } } }), mode: 'local', displayField: 'title', value: 'id', valueField: 'id', typeAhead: true, triggerAction: 'all', lazyRender: true}); var BranchEditorGrid = new Ext.grid.EditorGridPanel({ applyTo: 'CompanyBranchTable', id: 'branchgridpanel', store: dsBranchStore, border: false, frame: false, selModel: new Ext.grid.RowSelectionModel(), clicksToEdit: 'auto', height: 120, width: sw, columns: [ { id: 'branchname', header: 'Наименование', dataIndex: 'branchname', width: 150, sortable: true, editor: new Ext.form.TextField({ allowBlank: false}) }, { id: 'city', header: 'Град', dataIndex: 'city', sortable: true, editor: cityCombo, renderer: Ext.ux.renderer.Combo(cityCombo) }, { id: 'branchcityid', header: 'Адрес', dataIndex: 'address', width: 100, sortable: true, editor: new Ext.form.TextField({ allowBlank: false}) }, { id: 'email', width: 150, header: 'E-Mail', dataIndex: 'email', sortable: true, editor: new Ext.form.TextField({ allowBlank: false, vtype: 'email'}) }, { id: 'taxid', width: 150, header: 'ЕИК', dataIndex: 'taxid', sortable: true, editor: new Ext.form.TextField({ allowBlank: false}) } ], bbar: [{ text: 'Нов', handler: function(btn, ev) { if (parseInt(document.getElementById('branchslimit').value)==0 || dsBranchStore.getCount()