public RetornoIntegracaoPessoa ExcluirPessoa(ParametroIntegracaoPessoa param, string cod_pessoa, string cod_filial = null)
        {
            _log.TraceMethodStart();

            CucCluParametro parametrosLogin = GerarParametroCUC(param);

            ConfiguracaoURICUC         configuracaoURICUC = ConfiguracaoCUCService.BuscarURI(ConstantesInegracao.URLConfiguracao.CadastroPessoa, _configuracaoCUC);
            EndpointAddress            address            = new EndpointAddress(configuracaoURICUC.URI);
            CucCliCadastroPessoaClient client             = new CucCliCadastroPessoaClient(CucCliCadastroPessoaClient.EndpointConfiguration.BasicHttpBinding_ICucCliCadastroPessoa, address);

            try
            {
                var ret = client.Excluir(parametrosLogin, cod_pessoa, cod_filial);
                RetornoIntegracaoPessoa retorno = GerarRetornoIntegracaoPessoa(ret);

                _log.TraceMethodEnd();

                return(retorno);
            }
            catch (TimeoutException timeoutEx)
            {
                client.Abort();
                throw new Exception("Tempo de conexão expirado", timeoutEx);
            }
            catch (EndpointNotFoundException endPointEx)
            {
                throw new Exception("Caminho do serviço não disponível ou inválido", endPointEx);
            }
        }
        private RetornoIntegracaoPessoa AtualizarPessoa(ParametroIntegracaoPessoa param, string xml)
        {
            _log.TraceMethodStart();

            CucCluParametro parametrosLogin = GerarParametroCUC(param);

            ConfiguracaoURICUC         configuracaoURICUC = ConfiguracaoCUCService.BuscarURI(ConstantesInegracao.URLConfiguracao.CadastroPessoa, _configuracaoCUC);
            EndpointAddress            address            = new EndpointAddress(configuracaoURICUC.URI);
            CucCliCadastroPessoaClient client             = new CucCliCadastroPessoaClient(CucCliCadastroPessoaClient.EndpointConfiguration.BasicHttpBinding_ICucCliCadastroPessoa, address);

            try
            {
                _log.Trace($"Chamando o método CUC: {configuracaoURICUC.URI}");

                var ret = client.Atualizar(parametrosLogin, xml);

                _log.Trace($"Finalizando a chamada do método CUC: {configuracaoURICUC.URI}");

                RetornoIntegracaoPessoa retorno = GerarRetornoIntegracaoPessoa(ret);

                _log.TraceMethodEnd();

                return(retorno);
            }
            catch (TimeoutException timeoutEx)
            {
                client.Abort();
                throw new Exception("Tempo de conexão expirado", timeoutEx);
            }
            catch (EndpointNotFoundException endPointEx)
            {
                throw new Exception("Caminho do serviço não disponível ou inválido", endPointEx);
            }
        }
        public DataSetPessoa SelecionarCabecalho(ParametroIntegracaoPessoa param, string cod_pessoa, string cod_filial = null)
        {
            _log.TraceMethodStart();

            CucCluParametro parametrosLogin = GerarParametroCUC(param);

            ConfiguracaoURICUC         configuracaoURICUC = ConfiguracaoCUCService.BuscarURI(ConstantesInegracao.URLConfiguracao.CadastroPessoa, _configuracaoCUC);
            EndpointAddress            address            = new EndpointAddress(configuracaoURICUC.URI);
            CucCliCadastroPessoaClient client             = new CucCliCadastroPessoaClient(CucCliCadastroPessoaClient.EndpointConfiguration.BasicHttpBinding_ICucCliCadastroPessoa, address);

            try
            {
                var ret = client.SelecionarCabecalho(parametrosLogin, cod_pessoa, cod_filial);

                RetornoIntegracaoPessoa retorno = GerarRetornoIntegracaoPessoa(ret);

                if (retorno.Excecao != null)
                {
                    throw new ApplicationException($"Retorno serviço CUC - {ret.Excecao.Mensagem}");
                }

                if (string.IsNullOrWhiteSpace(retorno.Xml))
                {
                    throw new ApplicationException("Dados não encontrados para a pessoa informada");
                }

                XmlSerializer xmlSerialize = new XmlSerializer(typeof(DataSetPessoa));

                var valor_serealizado = new StringReader(retorno.Xml);

                DataSetPessoa dataSetPessoa = (DataSetPessoa)xmlSerialize.Deserialize(valor_serealizado);

                if (dataSetPessoa.RegistroPessoa[0].cod_pessoa == null)
                {
                    throw new ApplicationException($"Retorno serviço CUC - Codigo da pessoa não encontrado");
                }

                _log.TraceMethodEnd();

                return(dataSetPessoa);
            }
            catch (TimeoutException timeoutEx)
            {
                client.Abort();
                throw new Exception("Tempo de conexão expirado", timeoutEx);
            }
            catch (EndpointNotFoundException endPointEx)
            {
                throw new Exception("Caminho do serviço não disponível ou inválido", endPointEx);
            }
        }