/*
 * JSMin
 * Javascript Compressor
 * http://www.crockford.com/
 * http://www.smallsharptools.com/Projects/Packer/
*/

// V:\1.1.007\js\form\Ext.ux.Namirial.form.GestioneSostituti.js

Ext.ux.Namirial.form.GestioneSostituti=Ext.extend(Ext.ux.Namirial.ColumnWindow,{edit:false,pageSize:15,gridFilter:"1 = 1",searchFilter:"//",constructor:function(c){try{if(Ext.isEmpty(c.campoRicerca)){log.error('Ext.ux.Namirial.form.GestioneSostituti | Manca il campoRicerca');return false;}
if(Ext.isEmpty(c.user)){log.error('Ext.ux.Namirial.form.GestioneSostituti | Manca il nome utente');return false;}
if(Ext.isEmpty(c.mapping)){log.error('Ext.ux.Namirial.form.GestioneSostituti | Manca il mapping');return false;}
this.user=c.user;this.mapping=c.mapping;this.gridFilter="[SPORTELLO] = '"+this.user+"'";this.gridHeight=(this.pageSize*24)+24;this.basicForm=new Ext.form.BasicForm(null,{trackResetOnLoad:true});this.form_empty_values=[];this.campoRicerca=c.campoRicerca;this.campoRicerca.enableKeyEvents=true;this.campoRicerca.isLookup=true;this.campoRicerca.lookup=this;this.searchField=new Ext.form.TwinTriggerField({name:"(S1 || ' ' || ISNULL(S2, ''))",fieldLabel:getText.CERCA,width:200,enableKeyEvents:true,selectOnFocus:true,qtip:{text:UNI_E_MAIUSC+" possibile utilizzare * come carattere jolly"},trigger1Class:'x-form-search-trigger',trigger2Class:'x-form-clear-trigger'});this.searchField.onTrigger1Click=this.cerca.createDelegate(this);this.searchField.onTrigger2Click=this.cancellaRicerca.createDelegate(this);this.actions=[];nuovo_sostituto_action.setHandler(this.nuovo,this);this.tb_nuovo=nuovo_sostituto_action;this.actions.push(this.tb_nuovo);this.tb_salva=new Ext.Toolbar.Button({text:'Salva',icon:IMG_SALVA,disabled:true,iconCls:'x-btn-text-icon',tooltip:{title:'Salva',text:'Salva le modifiche apportate'},handler:this.salva,scope:this});this.tb_salva.on('click',function(e){this.form_dirty=this.isDirty();this.form_valid=this.basicForm.isValid();},this);this.actions.push(this.tb_salva);this.tb_modifica=new Ext.Toolbar.Button({text:'Modifica',iconCls:'x-btn-text-icon',disabled:true,tooltip:{title:'Modifica',text:'Modifica l\'elemento selezionato'},icon:IMG_EDIT,handler:this.modifica,scope:this});this.actions.push(this.tb_modifica);this.tb_cancella=new Ext.Toolbar.Button({text:'Elimina',iconCls:'x-btn-text-icon',disabled:true,tooltip:{title:'Elimina',text:"Elimina il sostituto selezionato"},icon:IMG_CANCEL,handler:this.elimina,scope:this});this.actions.push(this.tb_cancella);this.tb_ripristina=new Ext.Toolbar.Button({text:'Ripristina',iconCls:'x-btn-text-icon',disabled:true,tooltip:{title:'Ripristina',text:"Ripristina il sostituto selezionato"},icon:IMG_UNLOCK,handler:this.unlock,scope:this});this.actions.push(this.tb_ripristina);this.tb_annulla=new Ext.Toolbar.Button({text:'Annulla',icon:IMG_UNDO,disabled:true,iconCls:'x-btn-text-icon',tooltip:{title:'Annulla',text:'Annulla le modifiche'},handler:this.annullaRecord,scope:this});this.actions.push(this.tb_annulla);this.btn_ok=new Ext.Button({iconCls:'x-btn-text-icon',text:'Ok',disabled:true,icon:IMG_OK,minWidth:80,handler:function(){var rec=this.smCurrent.getSelected();if(!Ext.isEmpty(rec)){this.selectRecord.call(this,rec);}else{this.hide();}},scope:this});this.btn_annulla=new Ext.Button({iconCls:'x-btn-text-icon',text:'Annulla',icon:IMG_CANCEL,minWidth:80,handler:function(){this.hide();},scope:this});this.keyId=new Ext.ux.Namirial.form.TextField({name:'keyId',hidden:true,escludi:true,labelSeparator:''});this.basicForm.add(this.keyId);this.gruppo=new Ext.ux.Namirial.form.TextField({disabled:!c.modifica,hidden:true,name:'GRUPPO'});this.basicForm.add(this.gruppo);this.sportello=new Ext.ux.Namirial.form.TextField({disabled:!c.modifica,hidden:true,name:'SPORTELLO',value:this.user});this.basicForm.add(this.sportello);this.non_centralizzato=new Ext.ux.Namirial.form.TextField({name:'NON_CENTRALIZZATO',disabled:!c.modifica,hidden:true,value:0});this.basicForm.add(this.non_centralizzato);this.cfisc=new Ext.ux.Namirial.form.TextField({width:150,fieldLabel:'Codice fiscale/P. IVA',name:'S4',allowBlank:false,blankText:'Campo obbligatorio',disabled:!c.nuovo,validateOnBlur:false,validationEvent:'change',validator:controllaCfiscPIVA,listeners:{'valid':{fn:function(field){var value=field.getValue();var is_piva=controllaPIVA(value);var is_cfisc=controllaCfisc(value,true);if(is_piva===true){this.nome.hideContainer();this.nome.setValue('');this.cognome.setFieldLabel('Ragione sociale');}else{if(is_cfisc===true){this.nome.showContainer();this.nome.setDisabled(!this.edit);this.cognome.setFieldLabel('Cognome');}}
if(value=='80078750587'){this.codice_sede.showContainer();this.codice_sede.setFieldLabel('Cod. sede INPS:');this.codice_sede.setDisabled(!this.edit);}else{this.codice_sede.setValue('');this.codice_sede.hideContainer();}},scope:this}}});this.basicForm.add(this.cfisc);this.subcodice=new Ext.ux.Namirial.form.NumberField({name:'SUBCODICE',fieldLabel:'Subcodice',width:60,allowDecimals:false,integerDigits:4,allowNegative:false,autoCreate:MAX_LENGHT(4),disabled:!c.nuovo});this.basicForm.add(this.subcodice);this.codice=new Ext.ux.Namirial.form.NumberField({fieldLabel:'Codice sede',disabled:!c.modifica,width:60,name:'CODICE',allowDecimals:false,allowZero:true,integerDigits:3,autoCreate:MAX_LENGHT(3)});this.basicForm.add(this.codice);this.codice_sede=new Ext.ux.Namirial.form.NumberField({disabled:!c.modifica,fieldLabel:'',labelSeparator:'',width:60,hidden:true,allowDecimals:false,integerDigits:4,name:'CODICE_SEDE_INPS',autoCreate:MAX_LENGHT(4),ptip:{title:'Premere F2 per visualizzare la lista delle sedi',align:'b-t'}});this.basicForm.add(this.codice_sede);this.lookupInps=new Ext.ux.Namirial.form.Lookup({layout:'form',cod:this.codice_sede,width:90,idx_cod:0,output:[{descr:'qtip',idx:1}],tab:'Sedi INPS',obj_tab:obj_sedi_inps,columnToSearchFor:'SEDE',updateDescriptionOnLoad:false});this.cognome=new Ext.ux.Namirial.form.TextField({width:220,fieldLabel:getText.COGNOME,name:'S1',disabled:!c.modifica,allowBlank:false,blankText:'Campo obbligatorio'});this.basicForm.add(this.cognome);this.nome=new Ext.ux.Namirial.form.TextField({width:200,fieldLabel:getText.NOME,name:'S2',disabled:!c.modifica,blankText:'Campo obbligatorio'});this.basicForm.add(this.nome);this.comune=new Ext.ux.Namirial.form.TextField({name:'S5',allowBlank:false,blankText:'Campo obbligatorio',fieldLabel:getText.COMUNE,disabled:!c.modifica,width:180,ptip:{title:'Premere F2 per visualizzare la lista dei comuni',align:'b-t'},enableKeyEvents:true,validateOnBlur:false,validationEvent:'change',validator:controllaComune.createDelegate(this.lookupComuni)});this.basicForm.add(this.comune);this.prov=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.PROV,width:30,disabled:!c.modifica,allowBlank:false,readOnly:true,blankText:'Campo obbligatorio',name:'S6'});this.basicForm.add(this.prov);this.prov.on('valid',function(field){var value=field.getValue();this.codice.setAllowBlank(PROV_SOSTITUTI.indexOf(value)==-1);},this);this.cap=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.CAP,width:50,disabled:!c.modifica,allowBlank:false,readOnly:true,blankText:'Campo obbligatorio',name:'S7'});this.basicForm.add(this.cap);this.frazione=new Ext.ux.Namirial.form.TextField({name:'S3F',allowBlank:true,width:150,disabled:!c.modifica,blankText:'Campo obbligatorio',fieldLabel:getText.FRAZIONE});this.basicForm.add(this.frazione);this.lookupFrazione=new Ext.ux.Namirial.form.RemoteLookup({bodyStyle:SFONDO_FORM,border:false,windowTitle:'Frazioni',windowWidth:430,windowHeight:395,pageSize:12,store:storeFrazioni,gridHeaders:header_frazioni,campoRicerca:this.frazione,mapping:[{campo:this.frazione,valore:'FRAZIONE'}],mappingRicerca:'FRAZIONE',offlineMessage:"Non "+UNI_E+" possibile aprire la lista delle frazioni in modalit"+UNI_A+" offline."});this.lookupFrazione.on('beforeshowlist',function(){if(this.comune.isValid()){var comuneVal=this.comune.getValue();if(comuneVal==''){Toast("Attenzione",UNI_E_MAIUSC+" necessario inserire un comune.");return false;}
var comuneRec=cercaComune(comuneVal,2);storeFrazioni.setFilter("COMUNE = '"+comuneRec[1]+"'");}else{Toast("Attenzione","Comune non valido.");return false;}},this);this.tipo_via=new Ext.form.ComboBox({cstParent:RESIDENZA_ANAGRAFICA,fieldLabel:getText.TIPOLOGIA,width:80,disabled:!c.modifica,listWidth:80,name:'S3T',allowBlank:false,blankText:'Campo obbligatorio',store:Ext.ux.Namirial.Anagrafica.tipoResidenza,mode:'local',triggerAction:'all',selectOnFocus:true});this.basicForm.add(this.tipo_via);this.via=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.INDIRIZZO,width:285,disabled:!c.modifica,allowBlank:false,blankText:'Campo obbligatorio',name:'S3'});this.basicForm.add(this.via);this.ncivico=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.N_CIVICO,width:50,disabled:!c.modifica,allowBlank:false,blankText:'Campo obbligatorio',name:'S3N',maskRe:Ext.ux.form.VTypes.nCivico});this.basicForm.add(this.ncivico);this.telefono=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.TELEFONO,disabled:!c.modifica,width:120,name:'TEL',autoCreate:MAX_LENGHT(12),maskRe:Ext.ux.form.VTypes.numericMask});this.basicForm.add(this.telefono);this.fax=new Ext.ux.Namirial.form.TextField({fieldLabel:'Fax',disabled:!c.modifica,width:120,name:'FAX',autoCreate:MAX_LENGHT(12),maskRe:Ext.ux.form.VTypes.numericMask});this.basicForm.add(this.fax);this.email=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.EMAIL,upperCase:false,disabled:!c.modifica,width:130,autoCreate:MAX_LENGHT(60),name:'EMAIL',vtype:'email'});this.basicForm.add(this.email);this.inoltro_check=new Ext.form.Checkbox({labelSeparator:'',hideLabel:true,boxLabel:'730-4 da inoltrare ad un\'azienda esterna per elaborazione paghe (consulenti, ecc..) o sede decentrata',name:'TIPO_SEDE',disabled:!c.modifica});this.basicForm.add(this.inoltro_check);this.inoltro_check.on('check',function(cmp,state){this.abilitaInoltro(this.edit&&state);},this);this.inoltro_denominazione=new Ext.ux.Namirial.form.TextField({width:300,fieldLabel:'Denominazione azienda/sede decentrata',name:'DESTINATARIO',disabled:true,allowBlank:false,blankText:'Campo obbligatorio'});this.basicForm.add(this.inoltro_denominazione);this.inoltro_comune=new Ext.ux.Namirial.form.TextField({name:'S9',allowBlank:false,blankText:'Campo obbligatorio',fieldLabel:getText.COMUNE,disabled:true,width:180,ptip:{title:'Premere F2 per visualizzare la lista dei comuni',align:'b-t'},enableKeyEvents:true,validateOnBlur:false,validationEvent:'change',validator:controllaComune.createDelegate(this.lookupInoltroComuni)});this.basicForm.add(this.inoltro_comune);this.inoltro_prov=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.PROV,width:30,disabled:true,allowBlank:false,blankText:'Campo obbligatorio',name:'S10'});this.basicForm.add(this.inoltro_prov);this.inoltro_cap=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.CAP,width:50,disabled:true,allowBlank:false,blankText:'Campo obbligatorio',name:'S11'});this.basicForm.add(this.inoltro_cap);this.inoltro_frazione=new Ext.ux.Namirial.form.TextField({name:'S8F',allowBlank:true,width:150,disabled:true,blankText:'Campo obbligatorio',fieldLabel:getText.FRAZIONE});this.basicForm.add(this.inoltro_frazione);this.lookupFrazioneInoltro=new Ext.ux.Namirial.form.RemoteLookup({bodyStyle:SFONDO_FORM,border:false,windowTitle:'Frazioni',windowWidth:430,windowHeight:395,pageSize:12,store:storeFrazioni,gridHeaders:header_frazioni,campoRicerca:this.inoltro_frazione,mapping:[{campo:this.inoltro_frazione,valore:'FRAZIONE'}],mappingRicerca:'FRAZIONE',offlineMessage:"Non "+UNI_E+" possibile aprire la lista delle frazioni in modalit"+UNI_A+" offline."});this.lookupFrazioneInoltro.on('beforeshowlist',function(){if(this.inoltro_comune.isValid()){var comuneVal=this.inoltro_comune.getValue();if(comuneVal==''){Toast("Attenzione",UNI_E_MAIUSC+" necessario inserire un comune.");return false;}
var comuneRec=cercaComune(comuneVal,2);storeFrazioni.setFilter("COMUNE = '"+comuneRec[1]+"'");}else{Toast("Attenzione","Comune non valido.");return false;}},this);this.inoltro_tipo_via=new Ext.form.ComboBox({cstParent:RESIDENZA_ANAGRAFICA,fieldLabel:getText.TIPOLOGIA,width:80,disabled:true,listWidth:80,name:'S8T',allowBlank:false,blankText:'Campo obbligatorio',store:Ext.ux.Namirial.Anagrafica.tipoResidenza,mode:'local',triggerAction:'all',selectOnFocus:true});this.basicForm.add(this.inoltro_tipo_via);this.inoltro_via=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.INDIRIZZO,width:285,disabled:true,allowBlank:false,blankText:'Campo obbligatorio',name:'S8'});this.basicForm.add(this.inoltro_via);this.inoltro_ncivico=new Ext.ux.Namirial.form.TextField({fieldLabel:getText.N_CIVICO,width:50,disabled:true,allowBlank:false,blankText:'Campo obbligatorio',name:'S8N'});this.basicForm.add(this.inoltro_ncivico);this.campi_dati=[this.keyId,this.codice_sede,this.gruppo,this.sportello,this.non_centralizzato,this.cfisc,this.subcodice,this.codice,this.cognome,this.nome,this.comune,this.prov,this.cap,this.frazione,this.tipo_via,this.via,this.ncivico,this.telefono,this.fax,this.email];this.campi_inoltro=[this.inoltro_denominazione,this.inoltro_comune,this.inoltro_prov,this.inoltro_cap,this.inoltro_frazione,this.inoltro_tipo_via,this.inoltro_via,this.inoltro_ncivico];this.lookupComuni=new Ext.ux.Namirial.form.Lookup({layout:'form',cod:this.comune,width:185,idx_cod:2,output:[{descr:this.prov,idx:6},{descr:this.cap,idx:5}],tab:'Comuni',obj_tab:obj_comuni,columnToSearchFor:'COMUNE',filter:filtraComuniEsistenti,updateDescriptionOnLoad:false});this.lookupInoltroComuni=new Ext.ux.Namirial.form.Lookup({layout:'form',cod:this.inoltro_comune,idx_cod:2,output:[{descr:this.inoltro_prov,idx:6},{descr:this.inoltro_cap,idx:5}],tab:'Comuni',obj_tab:obj_comuni,columnToSearchFor:'COMUNE',filter:filtraComuniEsistenti,updateDescriptionOnLoad:false});this.dati=new Ext.FormPanel({frame:true,labelAlign:'top',items:[{layout:'column',defaults:{layout:'form'},items:[{width:160,items:this.cfisc},{width:80,items:this.subcodice},{width:80,items:this.codice},{width:90,items:this.lookupInps}]},{layout:'column',defaults:{layout:'form'},items:[{width:225,items:this.cognome},{width:200,items:this.nome}]},{layout:'column',defaults:{layout:'form'},items:[{width:185,items:this.lookupComuni},{width:35,items:this.prov},{width:55,items:this.cap},{width:150,items:this.lookupFrazione}]},{layout:'column',defaults:{layout:'form'},items:[{width:85,items:this.tipo_via},{width:290,items:this.via},{width:50,items:this.ncivico}]},{layout:'column',defaults:{layout:'form'},items:[{width:130,items:this.telefono},{width:130,items:this.fax},{width:150,items:this.email}]}]});this.inoltro=new Ext.FormPanel({frame:true,labelAlign:'top',items:[{layout:'column',items:[{width:360,layout:'form',items:this.inoltro_check}]},{layout:'column',items:[{width:310,layout:'form',items:this.inoltro_denominazione}]},{layout:'column',defaults:{layout:'form'},items:[{width:185,items:this.lookupInoltroComuni},{width:35,items:this.inoltro_prov},{width:55,items:this.inoltro_cap},{width:150,items:this.lookupFrazioneInoltro}]},{layout:'column',defaults:{layout:'form'},items:[{width:85,items:this.inoltro_tipo_via},{width:290,items:this.inoltro_via},{width:50,items:this.inoltro_ncivico}]}]});this.formPanel=new Ext.Panel({layout:'form',frame:false,border:false,bodyStyle:'background: transparent;',items:[this.dati,this.inoltro]});this.formPanel.on('render',function(){var fields=this.basicForm.items.items;for(var i=0,len=fields.length;i<len;i++){var value=fields[i].getValue();this.form_empty_values[fields[i].name]=(value==undefined)?'':value;}},this);var storeSostitutiFields=structStore.getFields(SOSTITUTI_TAB);storeSostitutiFields.push({name:"DENOM",mapping:"DENOM",as:"S1 || ' ' || ISNULL(S2, '')",type:"string",allowNull:true,convert:function(val){return unescape(val).trim();}},{name:"UTENTE",mapping:"UTENTE",type:"string",allowNull:true,convert:function(val){return unescape(val).trim();}},{name:"DATA",mapping:"DATA",type:"string",allowNull:true,convert:function(val){return unescape(val).trim();}});this.store=new Ext.ux.Namirial.data.ScriptTagStore({url:PAGEDATAURL,root:'rows',totalProperty:'totalRows',selectFrom:'vSOSIMPW',selectFilter:"WHERE "+this.gridFilter,remoteSort:true,id:'sostitutiStore',fields:storeSostitutiFields,sortInfo:{field:'S1',direction:'ASC'},baseParams:{limit:this.pageSize,key:'keyId'}});function beforeRowSelectFn(sm,row,ke,rec){if(this.tb_nuovo.disabled){this.setNuovo(false);}else{var prevRec=this.smCurrent.getSelected();if(!Ext.isEmpty(prevRec)&&prevRec!=rec&&this.edit){showLoading();unlockSostituto.call(this,prevRec.get('S4'),prevRec.get('SUBCODICE'),function(){hideLoading();this.setModifica(false);this.smCurrent.selectRecords([rec]);},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);this.smCurrent.selectRecords([prevRec]);});return false;}}}
function rowSelectFn(sm,row,rec){this.btn_ok.enable();this.basicForm.loadRecord(rec);if(sm===this.smPersonali){this.tb_cancella.enable();this.tb_modifica.enable();this.tb_nuovo.enable();this.tb_salva.disable();if(rec.get('UTENTE')==session.userLogged){this.tb_ripristina.enable();}else{this.tb_ripristina.disable();}}else{this.tb_cancella.disable();this.tb_modifica.disable();this.tb_nuovo.enable();this.tb_salva.disable();}}
this.smPersonali=new Ext.grid.RowSelectionModel({singleSelect:true,listeners:{rowselect:{fn:rowSelectFn,scope:this},beforerowselect:{fn:beforeRowSelectFn,scope:this}}});this.smAltri=new Ext.grid.RowSelectionModel({singleSelect:true,listeners:{rowselect:{fn:rowSelectFn,scope:this},beforerowselect:{fn:beforeRowSelectFn,scope:this}}});this.smCurrent=this.smPersonali;this.gridPersonali=new Ext.grid.GridPanel({title:'Sostituti personali',height:this.gridHeight,stripeRows:true,store:this.store,border:false,loadMask:true,columns:header_sostituti,sm:this.smPersonali});this.gridAltri=new Ext.grid.GridPanel({title:'Altri sostituti',height:this.gridHeight,stripeRows:true,store:this.store,border:false,loadMask:true,columns:header_sostituti,sm:this.smAltri});this.pag=new Ext.PagingToolbar({pageSize:this.pageSize,store:this.store,refreshText:'Ricarica'});function rowDblClickFn(grid,row,e){var rec=this.smPersonali.getSelected();this.selectRecord.call(this,rec);}
function rowKeyDownFn(e){var key=e.getKey();switch(key){case Ext.EventObject.ENTER:var rec=this.smCurrent.getSelected();this.selectRecord.call(this,rec);break;case Ext.EventObject.RIGHT:if(!this.pag.next.disabled){this.pag.next.handler();}
break;case Ext.EventObject.LEFT:if(!this.pag.prev.disabled){this.pag.prev.handler();}
break;}}
this.gridPersonali.on({'rowdblclick':{fn:rowDblClickFn,scope:this},'keydown':{fn:rowKeyDownFn,scope:this}});this.gridAltri.on({'rowdblclick':{fn:rowDblClickFn,scope:this},'keydown':{fn:rowKeyDownFn,scope:this}});this.gridPanel=new Ext.TabPanel({activeItem:0,border:false,resizable:true,deferredRender:true,items:[this.gridPersonali,this.gridAltri]});this.gridPanel.on('beforetabchange',function(panel,tab,oldtab){if(tab===this.gridPersonali){this.gridFilter="[SPORTELLO] = '"+this.user+"'";this.smCurrent=this.smPersonali;}else{this.gridFilter="([SPORTELLO] <> '"+this.user+"' OR [SPORTELLO] IS NULL)";this.smCurrent=this.smAltri;}
if(oldtab!=null){this.updateFilter();}
if(!this.smCurrent.getSelected()){this.tb_modifica.disable();this.tb_cancella.disable();}
this.btn_ok.disable();},this);this.campoRicerca.on({scope:this,'keyup':function(cmp,e){if(e.getKey()==113){this.openList(true);}}});this.searchField.on({scope:this,'keyup':function(cmp,e){if(e.getKey()==13){this.cerca();}}});Ext.ux.Namirial.form.GestioneSostituti.superclass.constructor.call(this,{draggable:true,constrainHeader:true,resizable:false,closeAction:'hide',title:"Gestione Sostituti d'imposta",width:860,height:550,lwidth:0.47,rwidth:0.53,lpanel:{border:false,layout:'fit',items:this.gridPanel,bbar:this.pag},rpanel:this.formPanel,tbar:this.actions,bbar:[{xtype:'label',html:'<table height="30" cellspadding="0" cellspacing="0"><tr><td style="padding-left: 15px; padding-right: 10px;" valign="middle">'+getText.CERCA+':</td></tr></table>'},this.searchField,'->',this.btn_ok,this.btn_annulla]});this.on({'beforeshow':{fn:function(){hideLoading();}},'show':{fn:function(){this.setNuovo(false);var deferredSelect=new Ext.util.DelayedTask(function(){this.cerca();},this);deferredSelect.delay(100);},scope:this},'hide':{fn:function(){this.campoRicerca.focus(true,100);},scope:this},'beforehide':{fn:function(){var rec=this.smCurrent.getSelected();if(rec&&this.edit){this.suspendEvents();showLoading();unlockSostituto.call(this,rec.get('S4'),rec.get('SUBCODICE'),function(){hideLoading();this.hide();this.resumeEvents();},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);this.resumeEvents();});return false;}},scope:this}});}catch(e){log.error("Ext.ux.Namirial.form.GestioneSostituti -> ",e);}},annullaRecord:function(){if(this.tb_nuovo.disabled){this.setNuovo(false);}else{var prevRec=this.smCurrent.getSelected();showLoading();unlockSostituto.call(this,prevRec.get('S4'),prevRec.get('SUBCODICE'),function(){hideLoading();this.setModifica(false);},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);});return false;}},nuovo:function(){var rec=this.smCurrent.getSelected();if(rec){if(this.edit){showLoading();unlockSostituto.call(this,rec.get('S4'),rec.get('SUBCODICE'),function(){this.setNuovo(true);hideLoading();},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);});}else if(this.smCurrent===this.smAltri){Ext.Msg.confirm("Nuovo sostituto","Desideri creare un nuovo sostituto sulla base dei dati di quello attualmente selezionato?",function(btn){if(btn=='yes'){this.setNuovo(true,rec);}else{this.setNuovo(true);}},this);}else{this.setNuovo(true);}}else{this.setNuovo(true);}},modifica:function(){if(!this.edit){var rec=this.smCurrent.getSelected();if(rec){showLoading('Attendere');checkLockSostituto.call(this,rec.get('S4'),rec.get('SUBCODICE'),function(){lockSostituto.call(this,rec.get('S4'),rec.get('SUBCODICE'),function(){hideLoading();this.setModifica(true);},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);});},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Sostituto occupato','Questo sostituto '+UNI_E+' gi'+UNI_A+' utilizzato da un altro utente.',2);});}else{Ext.ux.Namirial.Toast.msg('Errore','Errore nella modifica del sostituto',2);}}},salva:function(){log.debug("SALVA SOSTITUTO | basicForm.isDirty(): "+this.basicForm.isDirty());if(this.basicForm.isDirty()||1){var values=getValuesFromForm(this.basicForm,true);if(this.basicForm.isValid()){var type;values=getValuesFromForm(this.basicForm,true);if(this.tb_nuovo.isDisabled()){type=INSERT;}else{type=UPDATE;}
showLoading();salvaSostituto.call(this,type,values,function(){hideLoading();Ext.ux.Namirial.Toast.msg('Ok','Salvataggio del sostituto avvenuto con successo.',2);if(type==INSERT){this.setNuovo(false);}else{this.setModifica(false);}
this.tb_modifica.disable();this.tb_cancella.disable();this.btn_ok.disable();this.store.reload();},function(resObj){var message=unescape(resObj.ErrorMessage);if(message.indexOf("chiave duplicata")){this.getLastSubcodice(values.S4,function(){Ext.Msg.alert("Sostituto duplicato",UNI_E_MAIUSC+" gi"+UNI_A+" presente un sostituto d'imposta con la stessa partita IVA, "+UNI_E+" quindi necessario specificare un subcodice e salvare di nuovo."+"<br>Il sistema ha tentato di recuperare il primo subcodice disponibile, se questo non dovesse ancora funzionare, si consiglia di tentare con un numero maggiore.");});}else{hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Si '+UNI_E+' verificato un errore nel salvataggio del sostituto.',2);}});}else{Ext.ux.Namirial.Toast.msg('Attenzione!','Alcuni campi non sono validi.',2);}}},elimina:function(){var rec=this.smCurrent.getSelected();if(rec){var codice=rec.get('S4');var subcodice=rec.get('SUBCODICE');if(this.mapping[0].campo.getValue()==codice&&this.mapping[1].campo.getValue()==subcodice){Toast("Attenzione!","Impossibile eliminare questo sostituto in quanto attualmente assegnato a questa dichiarazione.");}else{var alert=Ext.Msg.confirm('Attenzione','Vuoi eliminare questo sostituto?',function(btn){if(btn=='yes'){showLoading();checkLockSostituto.call(this,codice,subcodice,function(){eliminaSostituto.call(this,codice,subcodice,function(){hideLoading();Ext.ux.Namirial.Toast.msg('Ok',"Sostituto eliminato con successo.",2);this.store.reload();this.tb_modifica.disable();this.tb_cancella.disable();},function(message){hideLoading();Ext.ux.Namirial.Toast.msg('Errore!',message,2);});},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore!','Si '+UNI_E+' verificato un errore nel controllo dello stato del sostituto.',2);});}},this);}}},setModifica:function(state){this.searchField.setDisabled(state);this.tb_cancella.setDisabled(state);this.tb_salva.setDisabled(!state);this.tb_annulla.setDisabled(!state);for(var i=0,len=this.campi_dati.length;i<len;i++){if(this.campi_dati[i].name!='S4'&&this.campi_dati[i].name!='SUBCODICE'||!state){this.campi_dati[i].setDisabled(!state);}}
this.inoltro_check.setDisabled(!state);for(var i=0,len=this.campi_inoltro.length;i<len;i++){this.campi_inoltro[i].setDisabled(!state||!this.inoltro_check.getValue());}
if(this.smCurrent.getCount()){this.tb_modifica.setDisabled(state);}
this.btn_ok.setDisabled(state);this.pag.loading.setVisible(!state);this.pag.setDisabled(state);if(this.smCurrent===this.smPersonali){this.gridAltri.setDisabled(state);}else{this.gridPersonali.setDisabled(state);}
this.edit=state;},setNuovo:function(state,copy){this.tb_nuovo.setDisabled(state);this.tb_cancella.setDisabled(state);this.smCurrent.clearSelections();if(!copy){this.resetForm();}else{this.sportello.setValue(session.userLogged);execSql(getQuery(SEL_SOSTITUTI_SUBCOD,[copy.get('S4')]),JSONDATAURL,function(response){var responseObj=Ext.util.JSON.decode(response.responseText);if(responseObj.totalRows>0){var max=0;for(var i=0,len=responseObj.totalRows;i<len;i++){var subcodice=parseInt(responseObj.rows[i].SUBCODICE,10);if(subcodice>max){max=subcodice;}}
max=(max+1).toString();var fixStr='';for(var j=0;j<(4-max.length);j++){fixStr=fixStr+'0';}
max=fixStr+max;this.subcodice.setValue(max);}else{this.subcodice.setValue('0000');}},function(){log.fatal("Errore query subcodice sostituto");},this);}
this.setModifica(state);this.cfisc.setDisabled(!state);this.subcodice.setDisabled(!state);},unlock:function(){var rec=this.smCurrent.getSelected();if(rec){showLoading();unlockSostituto.call(this,rec.get('S4'),rec.get('SUBCODICE'),function(){hideLoading();this.tb_modifica.disable();this.store.reload();},function(){hideLoading();Ext.ux.Namirial.Toast.msg('Errore','Errore nel ripristino del sostituto',2);});}},abilitaInoltro:function(state){for(var i=0,len=this.campi_inoltro.length;i<len;i++){if(this.campi_inoltro[i].name!='S4'&&this.campi_inoltro[i].name!='SUBCODICE'){this.campi_inoltro[i].setDisabled(!state);}}},cerca:function(){var search=this.searchField.getValue();this.searchFilter=search.replace(/[\\*]/g,'//');this.updateFilter();},updateFilter:function(){this.store.setFilter("WHERE "+this.gridFilter+" AND ([S4] LIKE '"+this.searchFilter+"//' OR "+this.searchField.name+" LIKE '"+this.searchFilter+"//')");this.store.load({params:{start:0,limit:this.pageSize}});},cancellaRicerca:function(){this.searchField.setValue('');},selectRecord:function(rec){rec=this.smCurrent.getSelected();if(this.smCurrent===this.smAltri){Ext.Msg.show({title:"Attenzione",msg:"Il sostituto che si sta per associare "+UNI_E+" stato creato da un'altro utente.<br>Tale sostituto potrebbe essere modificato o eliminato da tale utente, si consiglia pertanto di copiarlo.",icon:Ext.MessageBox.WARNING,buttons:{yes:'Copia',no:'Usa sostituto',cancel:'Annulla'},fn:function(btn){switch(btn){case'no':for(var i=0,len=this.mapping.length;i<len;i++){var value=rec.get(this.mapping[i].valore);this.mapping[i].campo.setValue(value);this.mapping[i].campo.getEl().highlight("0000FF",{attr:'background-color',duration:2});}
this.hide();break;case'yes':this.setNuovo(true,rec);break;}},scope:this});}else{for(var i=0,len=this.mapping.length;i<len;i++){var value=rec.get(this.mapping[i].valore);this.mapping[i].campo.setValue(value);this.mapping[i].campo.getEl().highlight("0000FF",{attr:'background-color',duration:2});}
this.hide();}},openList:function(search){search=search||false;if(session.isOnline){showLoading(null,null,null,this.showList.createDelegate(this));var searchVal=this.campoRicerca.getValue();if(search){this.searchField.setValue(searchVal);}else{this.searchField.setValue('');}}else{Toast("Operazione non consentita","Non "+UNI_E+" possibile visualizzare la lista dei sostituti in modalit"+UNI_A+" offline.");}},showList:function(){if(Ext.isEmpty(Ext.WindowMgr.get[this.id])){this.show();}},resetForm:function(){var fields=this.basicForm.items.items;for(var i=0,len=fields.length;i<len;i++){fields[i].originalValue=this.form_empty_values[fields[i].name];fields[i].setValue(this.form_empty_values[fields[i].name]);}
this.basicForm.reset();},isDirty:function(){var fields=this.basicForm.items.items;var dirty=false;for(var i=0,len=fields.length;i<len;i++){if(fields[i].isDirty()){dirty=true;}}
return dirty;},getLastSubcodice:function(codice,callback){execSql(getQuery(SEL_SOSTITUTI_SUBCOD,[codice]),JSONDATAURL,function(response){hideLoading();var responseObj=Ext.util.JSON.decode(response.responseText);if(responseObj.totalRows>0){var max=0;for(var i=0,len=responseObj.totalRows;i<len;i++){var subcodice=parseInt(responseObj.rows[i].SUBCODICE,10);if(subcodice>max){max=subcodice;}}
max=(max+1).toString();var fixStr='';for(var j=0;j<(4-max.length);j++){fixStr=fixStr+'0';}
max=fixStr+max;this.subcodice.setValue(max);}else{this.subcodice.setValue(0);}
callback.call(this);},function(){hideLoading();log.fatal("Errore query subcodice sostituto");callback.call(this);},this);}});

