/*  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 el resultado como un String
    function generarURLTransportista(cadena1, cadena2, codPedido) {
        var url = PedidosWebServiceSoapHttpPort_generarURLTransportista(cadena1, cadena2, codPedido);		
        return url; 
    }
    

    //Devuelve el resultado como un String
    function calcularPrecioPedido(codPedido) {
        var precio = PedidosWebServiceSoapHttpPort_calcularPrecioPedido(codPedido);		
        return precio;     
    }
    
    //Devuelve el resultado como un String
    function calcularPrecioLineaPedido(codLinea) {
        var precio = PedidosWebServiceSoapHttpPort_calcularPrecioLineaPedido(codLinea);		
        return precio;     
    }
    
    //Devuelve el resultado como un String
    function calcularPlazoEntregaPedido(codPedido) {
        var plazo = PedidosWebServiceSoapHttpPort_calcularPlazoEntregaPedido(codPedido);		
        return plazo;     
    }

    //Devuelve el resultado como un String
    function calcularPlazoEntregaLineaPedido(codLinea) {
        var plazo = PedidosWebServiceSoapHttpPort_calcularPlazoEntregaLineaPedido(codLinea);		
        return plazo;   
    }
    
    //Crea un CarritoPedido nuevo en el servidor. Devuelve ese objeto
    function crearCarritoPedido() {
        var carrPed = PedidosWebServiceSoapHttpPort_crearCarritoPedido();		
        var carritosPedido = traducirTextoAObjeto(carrPed);
        return carritosPedido[0];     
    }
    
    //No devuelve nada
    function crearPresupuestoPDFCarrito(codCarritoPedido, porcentaje) {
        var presupuesto = PedidosWebServiceSoapHttpPort_crearPresupuestoPDFCarrito(codCarritoPedido, porcentaje);		
        return presupuesto;     
    }
    
    //Modifica el CarritoPedido con los atributos del pasado como argumento. Devuelve ese objeto
    function modificarCarritoPedido(carritoPedido) {
        var carrPed = PedidosWebServiceSoapHttpPort_modificarCarritoPedido(carritoPedido.codCarritoPedido, 
                                carritoPedido.fecha, carritoPedido.codCliente, carritoPedido.fechaEntrega,
                                carritoPedido.direccionEntrega, carritoPedido.direccionFactura, carritoPedido.codTransportista,
                                carritoPedido.nombreCarrito, carritoPedido.pdf, carritoPedido.esCarrito, 
                                carritoPedido.urlTransportista, carritoPedido.idSesion);
        var carritosPedido = traducirTextoAObjeto(carrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return carritosPedido[0];                                 
    }
    
    //Devuelve el resultado como un String
    function calcularDtoLineaPedido(codLinea) {
        var dto = PedidosWebServiceSoapHttpPort_calcularDtoLineaPedido(codLinea);		
        return traducirTextoAObjeto(dto);    
    }

    //Devuelve el resultado como un String
    function calcularPrecioLineaPedidoConIVA(codLinea) {
        var precio = PedidosWebServiceSoapHttpPort_calcularPrecioLineaPedidoConIVA(codLinea);		
        return precio;     
    }

    //Devuelve el resultado como un String
    function calcularPrecioPedidoConIVA(codPedido) {
        var precio = PedidosWebServiceSoapHttpPort_calcularPrecioPedidoConIVA(codPedido);		
        return precio;      
    }
    
    //Devuelve el resultado como un String
    function calcularPrecioPancarta(codPancarta, unidades) {
        var precio = PedidosWebServiceSoapHttpPort_calcularPrecioPancarta(fuerzaTipos(codPancarta,1), unidades);
        //alert(fuerzaTipos(codPancarta,1));		
        return precio;      
    }    

    //Crea un nuevo CarritoPedido mediante la repetición del identificado con el argumento. Devuelve ese objeto
    function repetirCarritoPedido(codCarritoPedido) {
        var carrPed = PedidosWebServiceSoapHttpPort_repetirCarritoPedido(codCarritoPedido);		
        var carritosPedido = traducirTextoAObjeto(carrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return carritosPedido[0];      
    }

    //Crea una nueva LineaCarritoPedido con la clave pasada como argumento. Devuelve ese objeto
    function crearLineaCarritoPedido() {    
        var linCarrPed = PedidosWebServiceSoapHttpPort_crearLineaCarritoPedido();		
        var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return lineasCarritoPedido[0];          
    }
    
    //Crea una nueva LineaCarritoPedido a partir de la identificada en los 2 primeros argumentos. Devuelve ese objeto
    function repetirLineaCarritoPedido(codLineaFuente) {
        var linCarrPed = PedidosWebServiceSoapHttpPort_repetirLineaCarritoPedido(codLineaFuente);		
        var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return lineasCarritoPedido[0];         
    }
    
    //Recupera el CarritoPedido identificado por el argumento. Devuelve ese objeto
    function recuperarCarritoPedido(codCarritoPedido) {
        var carrPed = PedidosWebServiceSoapHttpPort_recuperarCarritoPedido(codCarritoPedido);		
        var carritosPedido = traducirTextoAObjeto(carrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return carritosPedido[0];      
    }

    //Añade una línea de portes al CarritoPedido identificado por el argumento. Devuelve ese objeto
    function añadirLineaPortes(codCarritoPedido) {
        var linCarrPed = PedidosWebServiceSoapHttpPort_anhadirLineaPortes(codCarritoPedido);		
        var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return lineasCarritoPedido[0];     
    }

    
    //Devuelve el resultado como un String
    function obtenerPorcentajeEstadoPedido(codPedido) {
        var porcentaje = PedidosWebServiceSoapHttpPort_obtenerPorcentajeEstadoPedido(codPedido);		
        return porcentaje;     
    }
    
    //Modifica la LineaCarritoPedido con los atributos del pasado como argumento. Devuelve ese objeto
    function modificarLineaCarritoPedido(lineaCarritoPedido) {
        var linCarrPed = PedidosWebServiceSoapHttpPort_modificarLineaCarritoPedido(
							    fuerzaTipos(lineaCarritoPedido.codLinea,1), 
                                fuerzaTipos(lineaCarritoPedido.codEstadoLinea, 1), 
                                fuerzaTipos(lineaCarritoPedido.precioUnitario,2), 
								lineaCarritoPedido.descripcion,
                                fuerzaTipos(lineaCarritoPedido.unidades,1), 
								fuerzaTipos(lineaCarritoPedido.codArticulo,1),
                                fuerzaTipos(lineaCarritoPedido.codPancarta,1), 
								lineaCarritoPedido.archivoMotivo);

        var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return lineasCarritoPedido[0];                                  
    }
    
    /*Añade una línea de CarritoPedido identificado por el identificador de sesión del usuario y según la información pasada.
      Devuelve ese objeto
     */
    function añadirLineaCarritoPedido(unidades, codAccesorio, ancho, alto, codPancarta, archivoMotivo, idSesion, codCliente) {
		

		
        var linCarrPed = PedidosWebServiceSoapHttpPort_anhadirLineaCarritoPedido(
																				 fuerzaTipos(unidades,1), 
																				 fuerzaTipos(codAccesorio,1), 
																				 fuerzaTipos(ancho,2), 
																				 fuerzaTipos(alto,2), 
                                                                                 fuerzaTipos(codPancarta,1), 
																				 fuerzaTipos(archivoMotivo,1), 
																				 fuerzaTipos(idSesion,1), 
																				 fuerzaTipos(codCliente,1) );	
		

		var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null) 

        return lineasCarritoPedido[0];     
    }  
    
    /*Aplica la promoción identificada por codigo al CarritoPedido especificado. Se puede especificar un codCliente para el caso
      de promociones asociadas a familias profesionales
     */
    function aplicarPromocionAPedido(codCliente, codigo, codCarritoPedido) {
        var res = PedidosWebServiceSoapHttpPort_aplicarPromocionAPedido(codCliente, codigo, codCarritoPedido);		
        res = traducirTextoAObjeto(res);          
        //O devuelve un Array vacío o un objeto Error si ha ocurrido algún error
        return res;         
    }
    
    /*Actualiza la líneaCarritoPedido correspondiente a codLinea, modificando las unidades según el parámetro pasado. En el mismo
      proceso se recalcula el importe de la línea y del CarritoPedido asociado.
    */
    function actualizarUnidadesLineaPedido(codLinea, unidades) {
        var linCarrPed = PedidosWebServiceSoapHttpPort_actualizarUnidadesLineaPedido(codLinea, unidades);		
        var lineasCarritoPedido = traducirTextoAObjeto(linCarrPed);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)  
        return lineasCarritoPedido[0];     
    }
    
    
    function confirmarPedido(codPedido, rutaPedido) {
        var res = PedidosWebServiceSoapHttpPort_confirmarPedido(codPedido, rutaPedido);	
        res = traducirTextoAObjeto(res);
        return res; 
    } 
    
    function borrarCarritoPedido(codCarritoPedido) {
        var res = PedidosWebServiceSoapHttpPort_borrarCarritoPedido(codCarritoPedido);	
        res = traducirTextoAObjeto(res);
        return res;    
    }
    
    function borrarLineaCarritoPedido(codLinea) {
        var res = PedidosWebServiceSoapHttpPort_borrarLineaCarritoPedido(codLinea);	
        res = traducirTextoAObjeto(res);
        return res;    
    }    
    
