 // vim: sw=4:ts=4:nu:nospell:fdc=4
 /*global Ext, EQP */
 /**
 * Classe que define o painel de lista de pedido
 *
 * @author Ot�vio Augusto
 * @copyright (c) 2009, by Ot�vio Augusto
 * @company Net On - Solu��es Tecnol�gicas
 * @date 10 de Setembro 2009
 *
 */

//Define o namespace
Ext.ns('Pedido.Pedido');

//Cria a classe base a ser estendida
Pedido.Pedido.Lista = Ext.extend(Ext.grid.EditorGridPanel,{		
	
	title: 'Lista do pedido',
		
	/**
	 * Inicializa o componente
	 */
	initComponent : function(){		
		
		/* Desativado em 02/02/10 por Otávio
		this.itemStore = new Ext.data.JsonStore({
	    	proxy: new Ext.data.HttpProxy({ 
	    		url: App.sysURL + 'item_action/findAll/',
	    		method: 'POST'
	    	}),
		    root: 'results',
		    idProperty: 'id',  
		    totalProperty: 'total',
		    fields: ['descricao','id']
		});*/
                this.itemStore = App.stores.Item;
		
		/* Desativado em 02/02/10 por Otávio
		this.setorStore = new Ext.data.JsonStore({
	    	proxy: new Ext.data.HttpProxy({ 
	    		url: App.sysURL + 'setor_action/findAll/',
	    		method: 'POST'
	    	}),
		    root: 'results',
		    idProperty: 'id',  
		    totalProperty: 'total',
		    fields: ['nome','id']
		});*/
                this.setorStore = App.stores.Setor;
		
		
		//Cria o tipo de registro item
		this.item = Ext.data.Record.create([
	           {name: 'id', type: 'number'},
	           {name: 'quantidade', type: 'number'}
        	]);
		
		//Cria o combobox do grid de edi��o de item
		this.cmbItem = new Ext.form.ComboBox({
                   typeAhead: false,
                   triggerAction: 'all',
                   store: this.itemStore,
                   displayField: 'descricao',
                   valueField: 'id',
                   mode:'local'
                });
		
		//Cria o combobox do grid de edi��o de item
		this.cmbSetor = new Ext.form.ComboBox({
                   typeAhead: false,
                   triggerAction: 'all',
                   store: this.setorStore,
                   displayField: 'nome',
                   valueField: 'id',
                   mode:'local'
                });		
		
		//Cria a configura��o personalizada
		config = {
			title: 'Lista do pedido',	
			height: 340,
			store: new Ext.data.JsonStore({
		    	proxy: new Ext.data.HttpProxy({ 
		    		url: App.sysURL + 'lista_action/findAll/',
		    		method: 'POST'
		    	}),
			    root: 'results',
			    idProperty: 'id',  
			    totalProperty: 'total',
			    fields: ['id','pedido_id','item_id','quantidade','setor_id']
			}),
			columns:[
			   {id: 'setor_id',header:'Setor Solicitante',dataIndex:'setor_id',width:300,editor: this.cmbSetor,
		           renderer: Ext.ux.renderer.Combo(this.cmbSetor)},		       			         
			   {id: 'item_id',header:'Produto / Servi&ccedil;o',dataIndex:'item_id',width:300,editor: this.cmbItem,
			           renderer: Ext.ux.renderer.Combo(this.cmbItem)},
		       {id: 'quantidade',header:'Quantidade',dataIndex:'quantidade',width:80, editor: new Ext.form.NumberField()}
			],
			tbar:[
			      {
			    	  text: '<b>Adicionar item</b>',
			    	  iconCls: 'ui-add-icon',
                                  id: 'lista-add-item',
			    	  handler: this.addItem,
			    	  scope: this
			      },
			      {
			    	  text: 'Remover item',
			    	  iconCls: 'ui-delete-icon',
                                  id: 'lista-delete-item',
   		        	  handler: function(){
		        		var sm = this.getSelectionModel(); 
		        		this.store.remove(sm.selection.record);
		        	  },
		        	  scope: this

			      }			      			      
			],
			autoExpandRow: 'item_id',			
			view : new Ext.grid.GridView({
				forceFit: true
			})
			
		};
		
		Ext.apply(this,config);							

		//Chama o initComponent da super classe
		Pedido.Pedido.Lista.superclass.initComponent.apply(this, arguments);		
	},
	
	getValues : function(){
		var records = this.store.data.items;
		var itens = new Array();
		
		for (i = 0; i < records.length; i++){
				itens[i]= {
						'item_id':records[i].data['item_id'], 
						'quantidade':records[i].data['quantidade'],
						'setor_id': records[i].data['setor_id']
				};
				
		}
		
		return  Ext.encode(itens);
		
	},
	
	/**
	 * Adiciona um produto/servi�o � lista do pedido
	 */
	addItem : function(){			
		var p = new this.item({
            id: '',
            quantidade: 1
        });
        var last = this.store.getCount();
            
        this.stopEditing();
        if (this.store.getCount() > 0)
        	this.store.insert(last,p);
        else
        	this.store.add(p);
        this.startEditing(last, 0);	            
		
	},
	
	/**
	 * Carrega a lista de itens de um pedido
	 */
	load : function(id){
		//Carrega o datastore
		this.store.load({params:{pedido_id: id}});
                Ext.getCmp('lista-add-item').disable();
                Ext.getCmp('lista-delete-item').disable();
		
	}
	

});

//Registra o novo componente
Ext.reg('pedido-lista',Pedido.Pedido.Lista);

