/// <summary>
        /// Recupera todos os Templates de Cópias disponiveis para a Empresa.
        /// </summary>
        /// <returns>XML contendo: CodigoTemplate, DescricaoTemplate, UtilizaPonteiro</returns>
        private string RecuperarTemplatesDisponiveis()
        {
            WsCopia.WsCopia wsCopia = CreateWsCopia();

            // Instanciação e atribuição do Objeto Login
            SoapLogin login = new SoapLogin();

            login.login = txtUsuario.Text;                      // Login fornecido pela CTF
            login.senha = txtSenha.Text;                        // Senha fornecida pela CTF

            // Atribuição do Objeto Login no Proxy
            wsCopia.SoapLoginValue = login;


            /* Realiza a chamada ao Método ListarTemplatesDisponiveis do WebService obtendo o
             * retorno do xml com os dados no formato:
             * <Templates>
             *		<Template>
             *			<CodigoTemplate />
             *			<DescricaoTemplate />
             *			<UtilizaPonteiro />
             *		<Template>
             * </Templates>
             */
            string ret = wsCopia.ListarTemplatesDisponiveis();

            return(ret);
        }
        /// <summary>
        /// Cria a instancia do proxy do WebService
        /// </summary>
        /// <returns></returns>
        private WsCopia.WsCopia CreateWsCopia()
        {
            // Instanciamos o client do WebService
            WsCopia.WsCopia wsCopia = new WsCopia.WsCopia();

            // Caso o proxy for configurado
            if (txtEndereco.Text.Trim() != string.Empty &&
                txtPorta.Text.Trim() != string.Empty &&
                txtSenhaDominio.Text.Trim() != string.Empty &&
                txtUsuarioDominio.Text.Trim() != string.Empty)
            {
                NetworkCredential credential = new NetworkCredential();
                credential.Domain   = txtDominio.Text.Trim();
                credential.Password = txtSenhaDominio.Text.Trim();
                credential.UserName = txtUsuarioDominio.Text.Trim();

                WebProxy proxy =
                    new WebProxy(string.Format("{0}:{1}", txtEndereco.Text.Trim(), txtPorta.Text.Trim()));
                proxy.Credentials = credential;

                wsCopia.Proxy = proxy;

                // Aumentamos o timeout, visto que a chamada pode ser demorada
                wsCopia.Timeout = 1000000;
            }
            return(wsCopia);
        }
        /// <summary>
        /// Método que realiza o login e efetua a recuperação dos registros da cópia conforme template escolhido
        /// </summary>
        /// <returns></returns>
        private string RecuperarDadosCopia()
        {
            WsCopia.WsCopia wsCopia = CreateWsCopia();
            // Instanciação e atribuição do Objeto Login
            SoapLogin login = new SoapLogin();

            login.login = txtUsuario.Text;                      // Login fornecido pela CTF
            login.senha = txtSenha.Text;                        // Senha fornecida pela CTF

            // Atribuição do Objeto Login no Proxy
            wsCopia.SoapLoginValue = login;

            // Instanciamos o Objeto ParametroCopia que é nosso transporte de dados
            ParametrosCopia parametrosCopia = new ParametrosCopia();


            /* Atribuimos o código do template desejado, tal código foi obtido à partir da
             * chamada do WebMethod "ListarTemplatesDisponiveis"
             */
            parametrosCopia.CodTemplate = int.Parse(lstTemplatesDisponiveis.SelectedValue.ToString());            //int.Parse(txtCodCopia.Text);


            /* Atribuimos o valor do ponteiro caso este seja necessário, podemos saber se ele é
             * requerido pelo retorno da chamada do WebMethod "ListarTemplatesDisponiveis" cujo campo
             * "UtilizaPonteiro" estiver marcado como "true"
             */
            parametrosCopia.Ponteiro = int.Parse(txtPonteiro.Text);


            /* Atribuimos a quantidade de registros à serem retornados. (Este parâmetro só deve ser utilizado,
             * caso o template desejado utilize ponteiro ou seja o campo "UtilizaPonteiro" do WebMethod
             * "ListarTemplatesDisponiveis" estiver marcado como "true"
             */
            parametrosCopia.QtdRegistro = int.Parse(txtRegistros.Text);

            /* Realizamos a chamada ao WebMethod RecuperarCopia passando como parâmetro o objeto
             * "parametrosCopia" instanciado e com os valores atribuidos anteriormente.
             */
            DateTime inicio = DateTime.Now;
            string   ret    = wsCopia.RecuperarCopia(parametrosCopia);

            return(ret);
        }