/*  METODOS DE SERVICIO DEL CLIENTE
    Estos métodos invocan a los servicios web correspondientes y devuelven la información devuelta por éstos en forma de
    objetos.
    NOTA IMPORTANTE: Todos los métodos pueden devolver, o bien un objeto Array cuyos elementos pertenecen al tipo indicado 
    en el comentario de la función, o bien un objeto del tipo indicado, o bien un objeto de tipo Error, del cual podemos
    obtener información de código de error (Error.codigo) y descripción (Error.descripcion), en función del código de error,
    definido en TiposError.js se tomarán decisiones de actuación. Para determinar si ha ocurrido un error tras la ejecución de
    traducirTextoAObjecto(...), podemos utilizar el operador instanceof para comparar el tipo del objeto devuelto, por ejemplo
    traducirTextoAObjecto(clientes) instanceof Error, devolverá true si efectivamente ha ocurrido un error.    
*/


	 //Devuelve un array con los tipos de tubos
	 function obtenerTubos(){
		 var tubos = obtenerAccesoriosDeTipo('6');
		 return tubos;
	 }

     //Devuelve un array de objetos con todos los materiales
     function obtenerMateriales() {              
        var materiales = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerMateriales();		
        return arrayMateriales = traducirTextoAObjeto(materiales);        
     }
     
     //Devuelve un array de objetos con todos los acabados
     function obtenerAcabados() {              
        var acabados = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerAcabados();		
        return arrayAcabados = traducirTextoAObjeto(acabados);        
     }  
     
     //Devuelve un array de objetos con todos los ollaos
     function obtenerOllaos() {              
        var ollaos = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerOllaos();
        return arrayOllaos = traducirTextoAObjeto(ollaos);        
     }   
     
     //Devuelve el objeto Pancarta identificado según el código de pancarta del parámetro
     function obtenerPancarta(codPancarta) {        
        var i = 0;
        var pancarta = ConfiguradorPancartaWebServiceSoapHttpPort_recuperarPancarta(codPancarta);        
        var pancartas = traducirTextoAObjeto(pancarta);           
        
        //Recuperamos y asignamos a variables globales las entradas de tubo de la pancarta
        var entradasTubo = obtenerEntradasTuboDePancarta(codPancarta);
        
        if(entradasTubo[0] !=  null) {
            entradaTuboSupGlobal = entradasTubo[0];
        }
        if(entradasTubo[1] !=  null) {
            entradaTuboInfGlobal = entradasTubo[1];
        }
        if(entradasTubo[2] !=  null) {
            entradaTuboIzqGlobal = entradasTubo[2];
        }
        if(entradasTubo[3] !=  null) {
            entradaTuboDerGlobal = entradasTubo[3];
        }
        
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)            
        return pancartas[0];            
     }   
     
     //Crea una nueva Pancarta y la devuelve
     function crearPancarta() {               
        var pancarta = ConfiguradorPancartaWebServiceSoapHttpPort_crearPancarta();
        var pancartas = traducirTextoAObjeto(pancarta); 
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)
        //document.write("CodPancarta: " + pancartas[0].codPancarta);
        return pancartas[0];        
     }   

     //Crea una nueva Entrada de Tubo y la devuelve
     function crearEntradaTubo() {               
        var entrada = ConfiguradorPancartaWebServiceSoapHttpPort_crearEntradaTubo();		
        var entradas = traducirTextoAObjeto(entrada); 		
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)       
        return entradas[0];        
     }  
	 
	 function fuerzaTipos(valor){
		
		 if (valor == null ){
			 valor = String( "" );
		 }
		 
		 return valor;
	 }
     
     /*
        Modifica una pancarta según el objeto Pancarta pasado. Es decir, la modifica la Pancarta en el modelo correspondiente
        con la Pancarta pasada como argumento. Se utiliza para actualizar los atributos de esa Pancarta ya que por defecto
        al cargar una Pancarta con el método obtenerPancarta se obtienen todos sus atributos, si se modifica alguno de los
        atributos de esa Pancarta invocamos a este método pasando esa Pancarta como argumento para guardar los cambios en 
        el modelo.
      */ 
     function modificarPancarta(pancarta) {        
        var pan = ConfiguradorPancartaWebServiceSoapHttpPort_modificarPancarta(
							fuerzaTipos(pancarta.codPancarta), 		fuerzaTipos(pancarta.codMaterial), 
                            fuerzaTipos(pancarta.ancho), 			fuerzaTipos(pancarta.alto),
                            fuerzaTipos(pancarta.codAcabSup), 		fuerzaTipos(pancarta.codAcabInf), 
                            fuerzaTipos(pancarta.codAcabIzq), 		fuerzaTipos(pancarta.codAcabDer),
                            fuerzaTipos(pancarta.codOllaoSup), 		fuerzaTipos(pancarta.codOllaoInf), 
                            fuerzaTipos(pancarta.codOllaoIzq), 		fuerzaTipos(pancarta.codOllaoDer), 
                            fuerzaTipos(pancarta.codEntTubSup), 		fuerzaTipos(pancarta.codEntTubInf), 
                            fuerzaTipos(pancarta.codEntTubIzq),		fuerzaTipos(pancarta.codEntTubDer),
                            fuerzaTipos(pancarta.numOllaosSup), 		fuerzaTipos(pancarta.numOllaosInf),
                            fuerzaTipos(pancarta.numOllaosIzq),		fuerzaTipos(pancarta.numOllaosDer),																		
                            fuerzaTipos(pancarta.codTerminacion),    fuerzaTipos(pancarta.motivoPropuesta), 
                            fuerzaTipos(pancarta.esPropuesta), 	    fuerzaTipos(pancarta.acronimo),
                            fuerzaTipos(pancarta.precioNeto)  );     		
        var pancartas = traducirTextoAObjeto(pan);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return pancartas[0];
     } 
     
     /*
        Modifica una entrada de tubo según el objeto pasado. Es decir, modifica la Entrada de Tubo en el modelo correspondiente
        con la Entrada de Tubo pasada como argumento. Se utiliza para actualizar los atributos de esa Entrada de Tubo.
      */ 
	  function enterosNoVacios(valor){
          // esta funcion se utiliza porque los datos de entrada de tubo no pueden tomar el valor de null
		  if (valor == null ){
			  valor = 0;
		  }
		 return  parseInt(valor);
	  }
	  
     function modificarEntradaTubo(entrada) {   
	
           var en = ConfiguradorPancartaWebServiceSoapHttpPort_modificarEntradaTubo(enterosNoVacios(entrada.codEntTub), enterosNoVacios(entrada.codAcabado), enterosNoVacios(entrada.abiertoIzq), enterosNoVacios(entrada.abiertoDer), fuerzaTipos(entrada.longitud), enterosNoVacios(entrada.diametro) );       	
        var entradas = traducirTextoAObjeto(en);  
	
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return entradas[0];
     }      
     
     //Obtiene un array de objetos Acabado correspondientes a la Pancarta cuyo identificador se pasa como argumento
     function obtenerAcabadosDePancarta(codPancarta) {        
        var acabados = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerAcabadosDePancarta(codPancarta);
        return traducirTextoAObjeto(acabados);        
     }   
     
     //Obtiene un array de objetos Ollao correspondientes a la Pancarta cuyo identificador se pasa como argumento     
     function obtenerOllaosDePancarta(codPancarta) {        

        var ollaos = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerOllaosDePancarta(codPancarta);
        return traducirTextoAObjeto(ollaos);        
     }  
     
     //Obtiene el objeto Material correspondiente a la Pancarta cuyo identificador se pasa como argumento     
     function obtenerMaterialDePancarta(codPancarta) {        
        var materiales = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerMaterialDePancarta(codPancarta);
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)
        return traducirTextoAObjeto(materiales)[0];                
     }
     
     //Obtiene un array de objetos EntradaTubo correspondientes a la Pancarta cuyo identificador se pasa como argumento     
     function obtenerEntradasTuboDePancarta(codPancarta) {              
        var entradas = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerEntradasTuboDePancarta(codPancarta);          
        return traducirTextoAObjeto(entradas);        
     }  
	 
     //Obtiene un array de objetos Terminacion correspondientes al Material cuyo identificador se pasa como argumento     
     function obtenerTerminacionesDeMaterial(codMaterial) {              
        var terminaciones = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerTerminacionesDeMaterial(codMaterial);          

        return traducirTextoAObjeto(terminaciones);        

     } 

     //Obtiene un objeto Terminacion correspondiente a la Pancarta cuyo identificador se pasa como argumento     

     function obtenerTerminacionDePancarta(codPancarta) {              
        var terminacion = ConfiguradorPancartaWebServiceSoapHttpPort_obtenerTerminacionDePancarta(codPancarta);  

        return traducirTextoAObjeto(terminacion)[0];        

     } 

     //Relaciona un objeto Terminacion con un objeto Material a partir de los códigos de clave primaria. Por supuesto los objetos deben existir previamente     
     function añadirTerminacionAMaterial(codTerminacion, codMaterial) {              
        var terminacion = ConfiguradorPancartaWebServiceSoapHttpPort_añadirTerminacionAMaterial(codTerminacion, codMaterial);          
        return traducirTextoAObjeto(terminacion)[0];        
     }  	 
	 
     //Crea una nueva Terminacion y la devuelve
     function crearTerminacion() {               
        var terminacion = ConfiguradorPancartaWebServiceSoapHttpPort_crearTerminacion();
        var terminaciones = traducirTextoAObjeto(terminacion); 
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)        
        return terminaciones[0];        
     } 	 

