private void ListarOrcamentos(bool mostrarMsgVazio)
        {
            dgOrcamentos.Items.Clear();

            Contrato.EntradaOrcamento entradaOrcamento = new Contrato.EntradaOrcamento();
            entradaOrcamento.Chave = Comum.Util.Chave;
            entradaOrcamento.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaOrcamento.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaOrcamento.Orcamento = new Contrato.Orcamento();
            entradaOrcamento.Paginar = true;
            entradaOrcamento.PosicaoUltimoItem = 0;
            entradaOrcamento.CantidadeItens = Comum.Parametros.QuantidadeItensPagina;

            PreencherFiltro(entradaOrcamento.Orcamento);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoOrcamento retOrcamento = servBrasilDidaticos.OrcamentoListar(entradaOrcamento);
            servBrasilDidaticos.Close();

            if (retOrcamento.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                foreach (Contrato.Orcamento c in retOrcamento.Orcamentos)
                    dgOrcamentos.Items.Add(c);
            }

            if (mostrarMsgVazio && retOrcamento.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retOrcamento.Mensagem, "Orcamento", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        private bool SalvarOrcamento()
        {
            bool salvou = true;

            StringBuilder strValidacao = ValidarCampos();

            // Verifica se as informações do usuário são válidas
            if (strValidacao.Length > 0)
            {
                MessageBox.Show(strValidacao.ToString(), "Orçamento", MessageBoxButton.OK, MessageBoxImage.Information);
                salvou = false;
            }
            else
            {
                Contrato.EntradaOrcamento entradaOrcamento = new Contrato.EntradaOrcamento();
                entradaOrcamento.Chave = Comum.Util.Chave;
                entradaOrcamento.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                entradaOrcamento.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
                if (_orcamento == null) entradaOrcamento.Novo = true;
                entradaOrcamento.Orcamento = new Contrato.Orcamento();

                PreencherOrcamento(entradaOrcamento.Orcamento);

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoOrcamento retOrcamento = servBrasilDidaticos.OrcamentoSalvar(entradaOrcamento);
                servBrasilDidaticos.Close();

                if (retOrcamento.Codigo != Contrato.Constantes.COD_RETORNO_SUCESSO)
                {
                    MessageBox.Show(retOrcamento.Mensagem, "Orçamento", MessageBoxButton.OK, MessageBoxImage.Error);
                    salvou = false;

                    if (retOrcamento.Codigo == Contrato.Constantes.COD_REGISTRO_DUPLICADO)
                    {
                        gdOrcamentoDados.ColumnDefinitions[1].Width = new GridLength(TAM_COLUNA_CODIGO);
                    }
                }
            }

            return salvou;
        }
        private void dgOrcamentos_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            try
            {
                if (e.VerticalChange != 0)
                {
                    if (e.VerticalOffset + e.ViewportHeight == e.ExtentHeight && _BuscarOrcamento)
                    {
                         Contrato.EntradaOrcamento entradaOrcamento = new Contrato.EntradaOrcamento();
                         entradaOrcamento.Chave = Comum.Util.Chave;
                         entradaOrcamento.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                         entradaOrcamento.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
                         entradaOrcamento.Orcamento = new Contrato.Orcamento();
                         entradaOrcamento.Paginar = true;
                         entradaOrcamento.PosicaoUltimoItem = int.Parse(e.ExtentHeight.ToString());
                         entradaOrcamento.CantidadeItens = int.Parse(e.ViewportHeight.ToString());

                         PreencherFiltro(entradaOrcamento.Orcamento);

                         Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                         Contrato.RetornoOrcamento retOrcamento = servBrasilDidaticos.OrcamentoListar(entradaOrcamento);
                         servBrasilDidaticos.Close();

                         if (retOrcamento.Codigo == 0)
                         {
                             // Verifica se será necessário buscar mais produtos
                             _BuscarOrcamento = retOrcamento.Orcamentos.Count == e.ViewportHeight;
                             // Se existem produtos preenche o grid
                             if (retOrcamento.Orcamentos.Count > 0)
                             {
                                 foreach (Contrato.Orcamento p in retOrcamento.Orcamentos)
                                     dgOrcamentos.Items.Add(p);
                             }
                         }
                     }
                 }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Orçamento", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                this.Cursor = Cursors.Arrow;
            }
        }