private void ListarProdutos()
        {
            Contrato.EntradaProduto entradaProduto = new Contrato.EntradaProduto();
            entradaProduto.Chave = Comum.Util.Chave;
            entradaProduto.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaProduto.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaProduto.Produto = new Contrato.Produto();

            Contrato.EntradaParametro entradaParametro = new Contrato.EntradaParametro();
            entradaParametro.Chave = Comum.Util.Chave;
            entradaParametro.UsuarioLogado = Comum.Util.UsuarioLogado.Login;

            PreencherFiltro(entradaProduto.Produto);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoProduto retProduto = servBrasilDidaticos.ProdutoListarRelatorio(entradaProduto);
            servBrasilDidaticos.Close();

            if (retProduto.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retProduto.Mensagem, "Relatório Atacado", MessageBoxButton.OK, MessageBoxImage.Information);
            else if (retProduto.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                WRelatorioAtacado wRelatorio = new WRelatorioAtacado();
                wRelatorio.Produtos = retProduto.Produtos;
                wRelatorio.ShowActivated = true;
                wRelatorio.Show();
            }
        }
        private void PreencherEstadosOrcamento()
        {
            Contrato.EntradaEstadoOrcamento entradaEstadoOrcamento = new Contrato.EntradaEstadoOrcamento();
            entradaEstadoOrcamento.Chave = Comum.Util.Chave;
            entradaEstadoOrcamento.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaEstadoOrcamento.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaEstadoOrcamento.EstadoOrcamento = new Contrato.EstadoOrcamento();
            if (_orcamento == null) entradaEstadoOrcamento.EstadoOrcamento.Ativo = true;

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoEstadoOrcamento retFornecedor = servBrasilDidaticos.EstadoOrcamentoListar(entradaEstadoOrcamento);
            servBrasilDidaticos.Close();

            if (retFornecedor.EstadosOrcamento != null)
            {
                foreach (Contrato.EstadoOrcamento estadoOrcamento in retFornecedor.EstadosOrcamento)
                {
                    if (_orcamento == null)
                    {
                        if (string.IsNullOrWhiteSpace(estadoOrcamento.Anterior.Codigo))
                            cmbEstadoOrcamento.ComboBox.Items.Add(new ComboBoxItem()
                            {
                                Uid = estadoOrcamento.Id.ToString(),
                                Content = estadoOrcamento.Nome,
                                Tag = estadoOrcamento,
                                IsSelected = true
                            });
                    }
                    else
                    {
                        if (_orcamento.Estado.Codigo == estadoOrcamento.Codigo || (estadoOrcamento.Anterior != null && _orcamento.Estado.Codigo == estadoOrcamento.Anterior.Codigo))
                        {
                            cmbEstadoOrcamento.ComboBox.Items.Add(new ComboBoxItem()
                            {
                                Uid = estadoOrcamento.Id.ToString(),
                                Content = estadoOrcamento.Nome,
                                Tag = estadoOrcamento,
                                IsSelected = (_orcamento != null && _orcamento.Estado != null ? estadoOrcamento.Id == _orcamento.Estado.Id : false)
                            });
                        }
                    }
                }
            }
        }
        private void PreencherVendedor()
        {
            Contrato.EntradaUsuario entradaUsuario = new Contrato.EntradaUsuario();
            entradaUsuario.Chave = Comum.Util.Chave;
            entradaUsuario.PreencherListaSelecao = true;
            entradaUsuario.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaUsuario.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaUsuario.Usuario = new Contrato.Usuario() { Ativo = true };

            // Se o perfil para vendedor está definido
            if (Comum.Parametros.CodigoPerfilVendedor != null)
            {
                entradaUsuario.Usuario.Perfis = new List<Contrato.Perfil>();
                entradaUsuario.Usuario.Perfis.Add(new Contrato.Perfil() { Codigo = Comum.Parametros.CodigoPerfilVendedor });

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoUsuario retUsuario = servBrasilDidaticos.UsuarioListar(entradaUsuario);
                servBrasilDidaticos.Close();

                if (retUsuario.Usuarios != null)
                {
                    foreach (Contrato.Usuario usuario in retUsuario.Usuarios.OrderBy(u => u.Nome))
                    {
                        cmbVendedor.ComboBox.Items.Add(new ComboBoxItem()
                        {
                            Uid = usuario.Id.ToString(),
                            Content = usuario.Nome,
                            Tag = usuario,
                            IsSelected = (_orcamento != null && _orcamento.Vendedor != null ? usuario.Id == _orcamento.Vendedor.Id : false)
                        });
                    }
                }
            }
            else
            {
                MessageBox.Show("Para incluir um novo Orçamento é necessário que exista um perfil 'Vendedor' configurado corretamente.", "Orçamento", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        private void ListarUnidadeMedidas()
        {
            List<Contrato.UnidadeMedida> lstUnidadeMedidas = new List<Contrato.UnidadeMedida>();

            Contrato.EntradaUnidadeMedida entUnidadeMedida = new Contrato.EntradaUnidadeMedida();
            entUnidadeMedida.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entUnidadeMedida.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entUnidadeMedida.Chave = Comum.Util.Chave;
            entUnidadeMedida.UnidadeMedida = new Contrato.UnidadeMedida() { Ativo = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoUnidadeMedida retUnidadeMedida = servBrasilDidaticos.UnidadeMedidaListar(entUnidadeMedida);
            servBrasilDidaticos.Close();

            // Se encontrou unidades de medidas
            if (retUnidadeMedida.UnidadeMedidas != null)
                // Adiciona as unidades de medidas
                lstUnidadeMedidas.AddRange(retUnidadeMedida.UnidadeMedidas);

            if (lstUnidadeMedidas != null)
            {
                List<Objeto.UnidadeMedida> objUnidadeMedidas = null;

                if (_produto != null && _produto.UnidadeMedidas != null)
                {
                    objUnidadeMedidas = new List<Objeto.UnidadeMedida>();

                    foreach (Contrato.UnidadeMedida unidadeMedida in lstUnidadeMedidas)
                    {
                        if (unidadeMedida != null)
                        {
                            objUnidadeMedidas.Add(new Objeto.UnidadeMedida { Selecionado = false, Id = unidadeMedida.Id, Nome = unidadeMedida.Nome, Ativo = unidadeMedida.Ativo });
                            Contrato.UnidadeMedida objUnidadeMedida = (from ft in _produto.UnidadeMedidas where ft.Nome == unidadeMedida.Nome select ft).FirstOrDefault();

                            if (objUnidadeMedida != null)
                            {
                                objUnidadeMedidas.Last().Selecionado = true;
                                objUnidadeMedidas.Last().Quantidade = objUnidadeMedida.Quantidade;
                                objUnidadeMedidas.Last().QuantidadeItens = objUnidadeMedida.QuantidadeItens;
                            }
                        }
                    }
                }
                else
                    objUnidadeMedidas = (from t in lstUnidadeMedidas
                                         select new Objeto.UnidadeMedida { Selecionado = false, Id = t.Id, Nome = t.Nome, Quantidade = t.Quantidade, QuantidadeItens = t.QuantidadeItens, Ativo = t.Ativo }).ToList();

                dgUnidadeMedidas.ItemsSource = objUnidadeMedidas;
            }
        }
        private void BuscarClientePorNome()
        {
            if (!string.IsNullOrWhiteSpace(cmbCliente.Nome))
            {
                Contrato.EntradaCliente entradaCliente = new Contrato.EntradaCliente();
                entradaCliente.Chave = Comum.Util.Chave;
                entradaCliente.PreencherListaSelecao = true;
                entradaCliente.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                entradaCliente.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
                entradaCliente.Cliente = new Contrato.Cliente();
                entradaCliente.Cliente.Ativo = true;
                entradaCliente.Cliente.Nome = cmbCliente.Nome;

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoCliente retCliente = servBrasilDidaticos.ClienteListar(entradaCliente);
                servBrasilDidaticos.Close();

                if (retCliente.Clientes != null)
                {
                    if (retCliente.Clientes.Count == 1)
                    {
                        cmbCliente.Id = retCliente.Clientes.First().Id;
                        cmbCliente.Codigo = retCliente.Clientes.First().Codigo;
                        cmbCliente.Nome = retCliente.Clientes.First().Nome;
                        cmbResponsavel.cmbComboBox.Focus();
                    }
                }
                else
                {
                    if (_orcamento != null && _orcamento.Cliente == null)
                        cmbCliente.Limpar();
                }
            }
        }
        private void PreencherMatriz()
        {
            Contrato.EntradaCliente entradaCliente = new Contrato.EntradaCliente();
            entradaCliente.Chave = Comum.Util.Chave;
            entradaCliente.PreencherListaSelecao = true;
            entradaCliente.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaCliente.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaCliente.Cliente = new Contrato.Cliente();
            if (_cliente == null) entradaCliente.Cliente.Ativo = true;

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoCliente retCliente = servBrasilDidaticos.ClienteListar(entradaCliente);
            servBrasilDidaticos.Close();

            if (retCliente.Clientes != null)
            {
                // Guarda os clientes recuperados
                _lstClientes = retCliente.Clientes;

                foreach (Contrato.Cliente cliente in retCliente.Clientes.OrderBy(c => c.Nome))
                {
                    cmbClienteMatriz.ComboBox.Items.Add(new ComboBoxItem()
                    {
                        Uid = cliente.Id.ToString(),
                        Content = cliente.Nome,
                        Tag = cliente,
                        IsSelected = (_cliente != null && _cliente.ClienteMatriz != null ? cliente.Id == _cliente.ClienteMatriz.Id : false)
                    });
                }
            }
        }
        private void ListarProdutos(bool mostrarMsgVazio)
        {
            Contrato.EntradaProduto entradaProduto = new Contrato.EntradaProduto();
            entradaProduto.Chave = Comum.Util.Chave;
            entradaProduto.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaProduto.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaProduto.Produto = new Contrato.Produto();
            entradaProduto.Paginar = true;
            entradaProduto.PosicaoUltimoItem = 0;
            entradaProduto.CantidadeItens = Comum.Parametros.QuantidadeItensPagina;

            PreencherFiltro(entradaProduto.Produto);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoProduto retProduto = servBrasilDidaticos.ProdutoListar(entradaProduto);
            servBrasilDidaticos.Close();

            if (retProduto.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Remove todos os produtos que não foram selecionados
                while ((from p in _lstProduto where p.Selecionado == false select p).Count() > 0)
                {
                    _lstProduto.Remove((from p in _lstProduto where p.Selecionado == false select p).First());
                }

                // Adiciona a lista os novos produtos que foram buscados
                foreach (Contrato.Produto p in retProduto.Produtos)
                    _lstProduto.Add(new Objeto.Produto { Selecionado = false, Id = p.Id, Codigo = p.Codigo, Nome = p.Nome, Fornecedor = p.Fornecedor, CodigoFornecedor = p.CodigoFornecedor, Quantidade = p.Quantidade, ValorBase = p.ValorBase, Taxas = p.Taxas, UnidadeMedidas = p.UnidadeMedidas });
            }

            // Define os novos produtos
            dgProdutos.ItemsSource = _lstProduto;

            if (mostrarMsgVazio && retProduto.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retProduto.Mensagem, "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        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 void PreencherEstadosOrcamento()
        {
            Contrato.EntradaEstadoOrcamento entradaEstadoOrcamento = new Contrato.EntradaEstadoOrcamento();
            entradaEstadoOrcamento.Chave = Comum.Util.Chave;
            entradaEstadoOrcamento.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaEstadoOrcamento.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaEstadoOrcamento.EstadoOrcamento = new Contrato.EstadoOrcamento() { Ativo = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoEstadoOrcamento retEstadoOrcamento = servBrasilDidaticos.EstadoOrcamentoListar(entradaEstadoOrcamento);
            servBrasilDidaticos.Close();

            if (retEstadoOrcamento.EstadosOrcamento != null)
            {
                cmbEstadoOrcamento.ComboBox.Items.Clear();
                cmbEstadoOrcamento.ComboBox.Items.Add(new ComboBoxItem() { Uid = Guid.Empty.ToString(), Content = "Todos" });
                foreach (Contrato.EstadoOrcamento estadoOrcamento in retEstadoOrcamento.EstadosOrcamento)
                {
                    cmbEstadoOrcamento.ComboBox.Items.Add(new ComboBoxItem() { Uid = estadoOrcamento.Id.ToString(), Content = estadoOrcamento.Nome, Tag = estadoOrcamento });
                }
            }
        }
        private bool SalvarPerfil()
        {
            bool salvou = true;

            _strValidacao = ValidarCampos();

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

                PreencherDadosPerfil(entPerfil.Perfil);

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoPerfil retPerfil = servBrasilDidaticos.PerfilSalvar(entPerfil);
                servBrasilDidaticos.Close();

                if (retPerfil.Codigo != Contrato.Constantes.COD_RETORNO_SUCESSO)
                {
                    MessageBox.Show(retPerfil.Mensagem, "Perfil", MessageBoxButton.OK, MessageBoxImage.Error);
                    salvou = false;
                }
            }

            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;
            }
        }
        private void ListarPermissoes()
        {
            Contrato.EntradaPermissao entPermissao = new Contrato.EntradaPermissao();
            entPermissao.Chave = Comum.Util.Chave;
            entPermissao.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entPermissao.Permissao = new Contrato.Permissao();
            entPermissao.Permissao.Ativo = true;

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoPermissao retPermissao = servBrasilDidaticos.PermissaoListar(entPermissao);
            servBrasilDidaticos.Close();

            if (retPermissao.Codigo != Contrato.Constantes.COD_RETORNO_VAZIO)
            {

                List<Objeto.Permissao> objPermissoes = null;

                if (_perfil != null && _perfil.Permissoes != null)
                   objPermissoes = (from p in retPermissao.Permissoes
                                    select new Objeto.Permissao { Selecionado = (from pm in _perfil.Permissoes where pm.Nome == p.Nome select pm).Count() > 0, Id = p.Id, Nome = p.Nome, Ativo = p.Ativo, }).ToList();
                else
                    objPermissoes = (from p in retPermissao.Permissoes
                                     select new Objeto.Permissao { Selecionado = false, Id = p.Id, Nome = p.Nome, Ativo = p.Ativo}).ToList();

                dgPermissoes.ItemsSource = objPermissoes;

            }
        }
        private bool SalvarUnidadeMedida()
        {
            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(), "Unidade de Medida", MessageBoxButton.OK, MessageBoxImage.Information);
                salvou = false;
            }
            else
            {
                Contrato.EntradaUnidadeMedida entradaUnidadeMedida = new Contrato.EntradaUnidadeMedida();
                entradaUnidadeMedida.Chave = Comum.Util.Chave;
                entradaUnidadeMedida.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                entradaUnidadeMedida.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
                if (_unidadeMedida == null) entradaUnidadeMedida.Novo = true;
                entradaUnidadeMedida.UnidadeMedida = new Contrato.UnidadeMedida();

                PreencherDados(entradaUnidadeMedida.UnidadeMedida);

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoUnidadeMedida retUnidadeMedida = servBrasilDidaticos.UnidadeMedidaSalvar(entradaUnidadeMedida);
                servBrasilDidaticos.Close();

                if (retUnidadeMedida.Codigo != Contrato.Constantes.COD_RETORNO_SUCESSO)
                {
                    MessageBox.Show(retUnidadeMedida.Mensagem, "UnidadeMedida", MessageBoxButton.OK, MessageBoxImage.Error);
                    salvou = false;
                }
            }

            return salvou;
        }
        private void PreencherFornecedores()
        {
            Contrato.EntradaFornecedor entradaFornecedor = new Contrato.EntradaFornecedor();
            entradaFornecedor.Chave = Comum.Util.Chave;
            entradaFornecedor.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaFornecedor.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaFornecedor.PreencherListaSelecao = true;
            entradaFornecedor.Fornecedor = new Contrato.Fornecedor() { Ativo = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoFornecedor retFornecedor = servBrasilDidaticos.FornecedorListar(entradaFornecedor);
            servBrasilDidaticos.Close();

            if (retFornecedor.Fornecedores != null && dgFornecedores.ItemsSource == null)
            {
                // Cria uma nova lista para receber os fornecedores
                List<Objeto.Fornecedor> lstFornecedor = new List<Objeto.Fornecedor>();

                // Adiciona a lista os novos produtos que foram buscados
                foreach (Contrato.Fornecedor f in retFornecedor.Fornecedores.OrderBy(f => f.Nome))
                    lstFornecedor.Add(new Objeto.Fornecedor { Selecionado = false, Id = f.Id, Codigo = f.Codigo, Nome = f.Nome });

                // Define os novos produtos
                dgFornecedores.ItemsSource = lstFornecedor;
            }
        }
        private void ListarPerfils(bool mostrarMsgVazio)
        {
            Contrato.EntradaPerfil entPerfil = new Contrato.EntradaPerfil();
            entPerfil.Chave = Comum.Util.Chave;
            entPerfil.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entPerfil.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entPerfil.Perfil = new Contrato.Perfil();

            PreencherFiltro(entPerfil.Perfil);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoPerfil retPerfil = servBrasilDidaticos.PerfilListar(entPerfil);
            servBrasilDidaticos.Close();

            dgPerfis.ItemsSource = retPerfil.Perfis;

            if (mostrarMsgVazio && retPerfil.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retPerfil.Mensagem, "Perfil", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        private void PreencherVendedor()
        {
            Contrato.EntradaUsuario entradaUsuario = new Contrato.EntradaUsuario();
            entradaUsuario.Chave = Comum.Util.Chave;
            entradaUsuario.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaUsuario.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaUsuario.PreencherListaSelecao = true;
            entradaUsuario.Usuario = new Contrato.Usuario() { Ativo = true };

            // Se o perfil para vendedor está definido
            if (Comum.Parametros.CodigoPerfilVendedor != null)
            {
                entradaUsuario.Usuario.Perfis = new List<Contrato.Perfil>();
                entradaUsuario.Usuario.Perfis.Add(new Contrato.Perfil() { Codigo = Comum.Parametros.CodigoPerfilVendedor });

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoUsuario retUsuario = servBrasilDidaticos.UsuarioListar(entradaUsuario);
                servBrasilDidaticos.Close();

                if (retUsuario.Usuarios != null)
                {
                    cmbVendedor.ComboBox.Items.Clear();
                    cmbVendedor.ComboBox.Items.Add(new ComboBoxItem() { Uid = Guid.Empty.ToString(), Content = "Todos" });
                    foreach (Contrato.Usuario usuario in retUsuario.Usuarios.OrderBy(u => u.Nome))
                    {
                        cmbVendedor.ComboBox.Items.Add(new ComboBoxItem() { Uid = usuario.Id.ToString(), Content = usuario.Nome, Tag = usuario });
                    }
                }
            }
        }
        /// <summary>
        /// Loga o usuário na aplicação
        /// </summary>
        private void DesbloquearUsuario()
        {
            StringBuilder strValidacao = ValidarCampos();

            // Verifica se as informações do usuário são válidas
            if (strValidacao.Length > 0)
            {
                MessageBox.Show(strValidacao.ToString(), "Sessão", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                // Define os dados do Login
                Contrato.EntradaUsuario usuario = new Contrato.EntradaUsuario();
                usuario.Usuario = new Contrato.Usuario();
                usuario.Usuario.Login = txtLogin.Conteudo;
                usuario.Usuario.Senha = Comum.Util.CriptografiaMD5(txtSenha.Conteudo);
                usuario.Chave = Comum.Util.Chave;

                // Chama o serviço para logar na aplicação
                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoUsuario retUsuario = servBrasilDidaticos.UsuarioLogar(usuario);
                servBrasilDidaticos.Close();

                // Verifica se o usuário logou com sucesso
                if (retUsuario.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO || retUsuario.Codigo == Contrato.Constantes.COD_REGISTRO_DUPLICADO)
                {
                    // Se o usuáio possui permissão para desbloqueio
                    if (_sessao != null &&
                        Comum.Util.ValidarPermissao(retUsuario.Usuarios.First(), Comum.Constantes.TELA_SESSAO, Comum.Constantes.PERMISSAO_DESBLOQUEAR_USUARIO) &&
                        retUsuario.Usuarios.First().Empresa.Id == _usuario.Empresa.Id)
                    {
                        servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                        servBrasilDidaticos.SessaoExcluir(new Contrato.Sessao() { Login = _sessao.Login, Chave = _sessao.Chave });
                        servBrasilDidaticos.Close();
                        SessaoDesbloqueada = true;

                        // Se está duplicado significa que o usuário já está logado, então não apaga a sua sessão
                        if (retUsuario.Codigo != Contrato.Constantes.COD_REGISTRO_DUPLICADO)
                        {
                            // Chama o serviço para apagar a sessão do usuário que possui permissão para o desbloqueio
                            servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                            servBrasilDidaticos.SessaoExcluir(new Contrato.Sessao() { Login = usuario.Usuario.Login, Chave = usuario.Chave });
                            servBrasilDidaticos.Close();
                        }

                        // Fecha a tela de Sessão
                        this.Close();
                    }
                }

                if (!SessaoDesbloqueada)
                {
                    MessageBox.Show(string.Format("Não foi possível desbloquear a sessão do usuário!\nPor favor, verifique o usuário ou a senha informada!", txtLogin.Conteudo), "Sessão", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
        }
        private void ListarFornecedores(bool mostrarMsgVazio)
        {
            Contrato.EntradaFornecedor entradaFornecedor = new Contrato.EntradaFornecedor();
            entradaFornecedor.Chave = Comum.Util.Chave;
            entradaFornecedor.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaFornecedor.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaFornecedor.Fornecedor = new Contrato.Fornecedor();

            PreencherFiltro(entradaFornecedor.Fornecedor);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoFornecedor retFornecedor = servBrasilDidaticos.FornecedorListar(entradaFornecedor);
            servBrasilDidaticos.Close();

            dgFornecedores.ItemsSource = retFornecedor.Fornecedores.OrderBy(o => o.Nome);

            if (mostrarMsgVazio && retFornecedor.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retFornecedor.Mensagem, "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        private void dgProdutos_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            try
            {
                if (e.VerticalChange != 0)
                {
                    if (e.VerticalOffset + e.ViewportHeight == e.ExtentHeight && _BuscarProduto)
                    {
                        Contrato.EntradaProduto entradaProduto = new Contrato.EntradaProduto();
                        entradaProduto.Chave = Comum.Util.Chave;
                        entradaProduto.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                        entradaProduto.EmpresaLogada = Comum.Parametros.EmpresaProduto;
                        entradaProduto.Produto = new Contrato.Produto() { Ativo = true };
                        entradaProduto.Paginar = true;
                        entradaProduto.PosicaoUltimoItem = int.Parse(e.ExtentHeight.ToString());
                        entradaProduto.CantidadeItens = int.Parse(e.ViewportHeight.ToString());

                        PreencherFiltro(entradaProduto.Produto);

                        Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                        Contrato.RetornoProduto retProduto = servBrasilDidaticos.ProdutoListar(entradaProduto);
                        servBrasilDidaticos.Close();

                        if (retProduto.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
                        {
                            // Verifica se será necessário buscar mais produtos
                            _BuscarProduto = retProduto.Produtos.Count == e.ViewportHeight;

                            // Se existem produtos preenche o grid
                            if (retProduto.Produtos.Count > Contrato.Constantes.COD_RETORNO_SUCESSO)
                            {
                                // Adiciona a lista os novos produtos que foram buscados
                                foreach (Contrato.Produto p in retProduto.Produtos)
                                    _lstProduto.Add(new Objeto.Produto { Selecionado = false, Id = p.Id, Codigo = p.Codigo, Nome = p.Nome, Fornecedor = p.Fornecedor, CodigoFornecedor = p.CodigoFornecedor, ValorBase = p.ValorBase, Taxas = p.Taxas });

                                dgProdutos.ItemsSource = _lstProduto;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                this.Cursor = Cursors.Arrow;
            }
        }
        public static void CarregarParametros()
        {
            Contrato.EntradaParametro entradaParametro = new Contrato.EntradaParametro();
            entradaParametro.Chave = Comum.Util.Chave;
            entradaParametro.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaParametro.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoParametro retParametro = servBrasilDidaticos.ParametroListar(entradaParametro);
            servBrasilDidaticos.Close();

            EmpresaProduto = new Contrato.Empresa() { Id = Comum.Util.UsuarioLogado.Empresa.Id };
            QuantidadeItensPagina = Constantes.QTD_ITENS_PAGINA;
            ValidadeOrcamento = Constantes.NUM_VALIDADE_ORCAMENTO;
            PrazoEntrega = Constantes.NUM_PRAZO_ENTREGA;
            CorPrimariaFundoTela = Constantes.COR_PRIMARIA_FUNDO;
            CorSecundariaFundoTela = Constantes.COR_SECUNDARIA_FUNDO;

            if (retParametro.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                foreach (Contrato.Parametro parametro in retParametro.Parametros)
                {
                    if (!string.IsNullOrWhiteSpace(parametro.Valor))
                    {
                        switch (parametro.Codigo)
                        {
                            case Constantes.PARAMETRO_DEC_ATACADO:
                                PercentagemAtacado = decimal.Parse(parametro.Valor) / 100;
                                break;
                            case Constantes.PARAMETRO_DEC_VAREJO:
                                PercentagemVarejo = decimal.Parse(parametro.Valor) / 100;
                                break;
                            case Constantes.PARAMETRO_QTD_ITENS_PAGINA:
                                QuantidadeItensPagina = int.Parse(parametro.Valor);
                                break;
                            case Constantes.PARAMETRO_COD_PERFIL_VENDEDOR:
                                CodigoPerfilVendedor = parametro.Valor;
                                break;
                            case Constantes.PARAMETRO_COD_PERFIL_ORCAMENTISTA:
                                CodigoPerfilOrcamentista = parametro.Valor;
                                break;
                            case Constantes.PARAMETRO_NUM_PRAZO_ENTREGA:
                                PrazoEntrega = int.Parse(parametro.Valor);
                                break;
                            case Constantes.PARAMETRO_NUM_VALIDADE_ORCAMENTO:
                                ValidadeOrcamento = int.Parse(parametro.Valor);
                                break;
                            case Constantes.PARAMETRO_COR_PRIMARIA_FUNDO:
                                CorPrimariaFundoTela = parametro.Valor;
                                break;
                            case Constantes.PARAMETRO_COR_SECUNDARIA_FUNDO:
                                CorSecundariaFundoTela = parametro.Valor;
                                break;
                            case Constantes.PARAMETRO_COD_EMPRESA_PRODUTO:
                                Contrato.EntradaEmpresa entradaEmpresa = new Contrato.EntradaEmpresa();
                                entradaEmpresa.Chave = Comum.Util.Chave;
                                entradaEmpresa.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                                entradaEmpresa.Empresa = new Contrato.Empresa() { Codigo = parametro.Valor, Ativo = true};
                                servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                                Contrato.RetornoEmpresa retEmpresa = servBrasilDidaticos.EmpresaListar(entradaEmpresa);
                                servBrasilDidaticos.Close();
                                if (retEmpresa.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
                                    EmpresaProduto = new Contrato.Empresa() { Id = retEmpresa.Empresas.First().Id };
                                break;
                        }
                    }
                }
            }
        }
        private void ListarTaxas()
        {
            List<Contrato.Taxa> lstTaxas = new List<Contrato.Taxa>();

            Contrato.EntradaTaxa entTaxa = new Contrato.EntradaTaxa();
            entTaxa.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entTaxa.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entTaxa.Chave = Comum.Util.Chave;
            entTaxa.Taxa = new Contrato.Taxa() { Ativo = true, Produto = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoTaxa retTaxa = servBrasilDidaticos.TaxaListar(entTaxa);
            servBrasilDidaticos.Close();

            // Se encontrou taxas
            if (retTaxa.Taxas != null)
                // Adiciona as taxas do Produto
                lstTaxas.AddRange(retTaxa.Taxas);

            if (cmbFornecedor.ValorSelecionado != null)
            {
                // Recupera as taxas do fornecedor
                List<Contrato.Taxa> taxas = (from f in _lstFornecedores
                                            where f.Id == ((Contrato.Fornecedor)cmbFornecedor.ValorSelecionado).Id
                                            select f).First().Taxas;

                // Se encontrou as taxas do fornecedor
                if (taxas != null)
                {
                    // Para cada taxa dentro da listagem de taxa do fornecedor
                    foreach (Contrato.Taxa tx in taxas)
                    {
                        if (tx != null)
                        {
                            Contrato.Taxa objTaxa = lstTaxas.Where(t => t.Nome == tx.Nome).FirstOrDefault();

                            if (objTaxa != null)
                            {
                                if (lstTaxas.RemoveAll(t => t.Nome == tx.Nome && (objTaxa.Valor != t.Valor || t.Valor == 0)) > 0)
                                    lstTaxas.Add(tx);
                            }
                            else
                                lstTaxas.Add(tx);
                        }
                    }
                }
            }

            if (lstTaxas != null)
            {
                List<Objeto.Taxa> objTaxas = null;

                if (_produto != null && _produto.Taxas != null)
                {
                    objTaxas = new List<Objeto.Taxa>();

                    // Para cada taxa existente
                    foreach (Contrato.Taxa taxa in lstTaxas)
                    {
                        // Verifica se a taxa não está vazia
                        if (taxa != null)
                        {
                            // Adiciona a taxa no objeto que popula o grid
                            objTaxas.Add(new Objeto.Taxa { Selecionado = false, Id = taxa.Id, Nome = taxa.Nome, Prioridade = taxa.Prioridade, Ativo = taxa.Ativo });
                            // Recupera a mesma taxa na lista de taxas do produto
                            Contrato.Taxa objTaxa = (from ft in _produto.Taxas where ft.Nome == taxa.Nome select ft).FirstOrDefault();
                            // Se a taxa existe para o produto
                            if (objTaxa != null)
                            {
                                // Atualiza a taxa com os valores do produto
                                objTaxas.Last().Selecionado = true;
                                objTaxas.Last().Valor = objTaxa.Valor;
                                objTaxas.Last().Prioridade = objTaxa.Prioridade;
                            }
                        }
                    }
                }
                else
                    objTaxas = (from t in lstTaxas
                                select new Objeto.Taxa { Selecionado = false, Id = t.Id, Nome = t.Nome, Valor = t.Valor, Prioridade = t.Prioridade, Ativo = t.Ativo }).ToList();

                dgTaxas.ItemsSource = objTaxas;
            }
        }
        private void PreencherDadosTaxas()
        {
            Contrato.EntradaTaxa entTaxa = new Contrato.EntradaTaxa();
            entTaxa.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entTaxa.Chave = Comum.Util.Chave;
            entTaxa.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entTaxa.Taxa = new Contrato.Taxa() { Ativo = true, Fornecedor = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoTaxa retTaxa = servBrasilDidaticos.TaxaListar(entTaxa);
            servBrasilDidaticos.Close();

            if (retTaxa.Codigo != Contrato.Constantes.COD_RETORNO_VAZIO)
            {
                List<Objeto.Taxa> objTaxas = null;

                if (_fornecedor != null && _fornecedor.Taxas != null)
                {
                    objTaxas = new List<Objeto.Taxa>();

                    foreach (Contrato.Taxa taxa in retTaxa.Taxas)
                    {
                        objTaxas.Add(new Objeto.Taxa { Selecionado = false, Id = taxa.Id, Nome = taxa.Nome, Ativo = taxa.Ativo});
                        Contrato.Taxa objTaxa = (from ft in _fornecedor.Taxas where ft != null && ft.Nome == taxa.Nome select ft).FirstOrDefault();

                        if (objTaxa != null)
                        {
                            objTaxas.Last().Selecionado = true;
                            objTaxas.Last().Valor = objTaxa.Valor;
                            objTaxas.Last().Prioridade = objTaxa.Prioridade;
                        }
                    }
                }
                else
                    objTaxas = (from t in retTaxa.Taxas
                                select new Objeto.Taxa { Selecionado = false, Id = t.Id, Nome = t.Nome, Ativo = t.Ativo }).ToList();

                dgTaxas.ItemsSource = objTaxas;

            }
        }
        private void PreencherFornecedores()
        {
            Contrato.EntradaFornecedor entradaFornecedor = new Contrato.EntradaFornecedor();
            entradaFornecedor.Chave = Comum.Util.Chave;
            entradaFornecedor.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaFornecedor.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaFornecedor.Fornecedor = new Contrato.Fornecedor();
            if (_produto == null) entradaFornecedor.Fornecedor.Ativo = true;

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoFornecedor retFornecedor = servBrasilDidaticos.FornecedorListar(entradaFornecedor);
            servBrasilDidaticos.Close();

            if (retFornecedor.Fornecedores != null)
            {
                // Guarda os fornecedores recuperados
                _lstFornecedores = retFornecedor.Fornecedores;

                foreach (Contrato.Fornecedor fornecedor in retFornecedor.Fornecedores.OrderBy(f => f.Nome))
                {
                    cmbFornecedor.ComboBox.Items.Add(new ComboBoxItem()
                    {
                        Uid = fornecedor.Id.ToString(),
                        Content = fornecedor.Nome,
                        Tag = fornecedor,
                        IsSelected = (_produto != null && _produto.Fornecedor != null ? fornecedor.Id == _produto.Fornecedor.Id : false)
                    });
                }
            }
        }
        private bool SalvarFornecedor()
        {
            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(), "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Information);
                salvou = false;
            }
            else
            {
                Contrato.EntradaFornecedor entradaFornecedor = new Contrato.EntradaFornecedor();
                entradaFornecedor.Chave = Comum.Util.Chave;
                entradaFornecedor.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                entradaFornecedor.EmpresaLogada = Comum.Parametros.EmpresaProduto;
                if (_fornecedor == null) entradaFornecedor.Novo = true;
                entradaFornecedor.Fornecedor = new Contrato.Fornecedor();

                PreencherFornecedor(entradaFornecedor.Fornecedor);

                Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
                Contrato.RetornoFornecedor retFornecedor = servBrasilDidaticos.FornecedorSalvar(entradaFornecedor);

                if (retFornecedor.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO && _produtos != null)
                {
                    Contrato.EntradaProdutos entradaProdutos = new Contrato.EntradaProdutos();
                    entradaProdutos.Chave = Comum.Util.Chave;
                    entradaProdutos.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
                    entradaProdutos.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
                    entradaProdutos.Fornecedor = entradaFornecedor.Fornecedor;
                    Contrato.RetornoProduto retProduto = null;

                    while (_produtos.Count > 0)
                    {
                        entradaProdutos.Produtos = _produtos.Take(_produtos.Count > MAX_ITEM_REMOVE ? MAX_ITEM_REMOVE : _produtos.Count).ToList();
                        retProduto = servBrasilDidaticos.ProdutosSalvar(entradaProdutos);
                        _produtos.RemoveRange(0, _produtos.Count > MAX_ITEM_REMOVE ? MAX_ITEM_REMOVE : _produtos.Count);
                    }

                    if (retProduto.Codigo != Contrato.Constantes.COD_RETORNO_SUCESSO)
                    {
                        MessageBox.Show(retFornecedor.Mensagem, "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Error);
                        salvou = false;
                    }
                }

                if (retFornecedor.Codigo != Contrato.Constantes.COD_RETORNO_SUCESSO)
                {
                    MessageBox.Show(retFornecedor.Mensagem, "Fornecedor", MessageBoxButton.OK, MessageBoxImage.Error);
                    salvou = false;

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

                servBrasilDidaticos.Close();
            }

            return salvou;
        }
 private void GerarNovoCodigo()
 {
     Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
     string retCodigoOrcamento = servBrasilDidaticos.OrcamentoBuscarCodigo(Comum.Util.UsuarioLogado.Empresa.Id);
     servBrasilDidaticos.Close();
     txtCodigo.Conteudo = retCodigoOrcamento;
 }
        private void ListarUnidadeMedidas(bool mostrarMsgVazio)
        {
            Contrato.EntradaUnidadeMedida entUnidadeMedida = new Contrato.EntradaUnidadeMedida();
            entUnidadeMedida.Chave = Comum.Util.Chave;
            entUnidadeMedida.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entUnidadeMedida.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entUnidadeMedida.UnidadeMedida = new Contrato.UnidadeMedida();

            PreencherFiltro(entUnidadeMedida.UnidadeMedida);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoUnidadeMedida retUnidadeMedida = servBrasilDidaticos.UnidadeMedidaListar(entUnidadeMedida);
            servBrasilDidaticos.Close();

            if (retUnidadeMedida.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                dgUnidadeMedidas.ItemsSource = retUnidadeMedida.UnidadeMedidas.OrderBy(o => o.Nome);
            }

            if (mostrarMsgVazio && retUnidadeMedida.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retUnidadeMedida.Mensagem, "Unidade de Medida", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        private void PreencherResponsavel()
        {
            Contrato.EntradaUsuario entradaUsuario = new Contrato.EntradaUsuario();
            entradaUsuario.Chave = Comum.Util.Chave;
            entradaUsuario.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaUsuario.EmpresaLogada = Comum.Util.UsuarioLogado.Empresa;
            entradaUsuario.PreencherListaSelecao = true;
            entradaUsuario.Usuario = new Contrato.Usuario() { Ativo = true };

            // Se o perfil para orçamentista está definido
            if (Comum.Parametros.CodigoPerfilOrcamentista != null)
            {
                entradaUsuario.Usuario.Perfis = new List<Contrato.Perfil>();
                entradaUsuario.Usuario.Perfis.Add(new Contrato.Perfil() { Codigo = Comum.Parametros.CodigoPerfilOrcamentista });
            }

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoUsuario retUsuario = servBrasilDidaticos.UsuarioListar(entradaUsuario);
            servBrasilDidaticos.Close();

            bool incluiuLogado = false;

            if (retUsuario.Usuarios != null)
            {
                foreach (Contrato.Usuario usuario in retUsuario.Usuarios.OrderBy(u => u.Nome))
                {
                    cmbResponsavel.ComboBox.Items.Add(new ComboBoxItem()
                    {
                        Uid = usuario.Id.ToString(),
                        Content = usuario.Nome,
                        Tag = usuario,
                        IsSelected = (_orcamento != null && _orcamento.Responsavel != null) ? usuario.Id == _orcamento.Responsavel.Id : false
                    });

                    if (!incluiuLogado) incluiuLogado = usuario.Login == Comum.Util.UsuarioLogado.Login;
                }
            }

            if (!incluiuLogado)
            {
                cmbResponsavel.ComboBox.Items.Add(new ComboBoxItem()
                {
                    Uid = Comum.Util.UsuarioLogado.Id.ToString(),
                    Content = Comum.Util.UsuarioLogado.Nome,
                    Tag = Comum.Util.UsuarioLogado,
                    IsSelected = true
                });

            }
        }
        private void PreencherFornecedores()
        {
            Contrato.EntradaFornecedor entradaFornecedor = new Contrato.EntradaFornecedor();
            entradaFornecedor.Chave = Comum.Util.Chave;
            entradaFornecedor.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaFornecedor.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaFornecedor.Fornecedor = new Contrato.Fornecedor() { Ativo = true };

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoFornecedor retFornecedor = servBrasilDidaticos.FornecedorListar(entradaFornecedor);
            servBrasilDidaticos.Close();

            if (retFornecedor.Fornecedores != null)
            {
                cmbFornecedor.ComboBox.Items.Add(new ComboBoxItem() { Uid = Guid.Empty.ToString(), Content = "Todos" });
                foreach (Contrato.Fornecedor fornecedor in retFornecedor.Fornecedores.OrderBy(f => f.Nome))
                {
                    cmbFornecedor.ComboBox.Items.Add(new ComboBoxItem() { Uid = fornecedor.Id.ToString(), Content = fornecedor.Nome, Tag = fornecedor });
                }
            }
        }
        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 PreencherDadosProdutos(bool mostrarMsgVazio)
        {
            dgProdutos.Items.Clear();

            Contrato.EntradaProduto entradaProduto = new Contrato.EntradaProduto();
            entradaProduto.Chave = Comum.Util.Chave;
            entradaProduto.UsuarioLogado = Comum.Util.UsuarioLogado.Login;
            entradaProduto.EmpresaLogada = Comum.Parametros.EmpresaProduto;
            entradaProduto.Produto = new Contrato.Produto() { Ativo = true };
            entradaProduto.Paginar = true;
            entradaProduto.PosicaoUltimoItem = 0;
            entradaProduto.CantidadeItens = Comum.Parametros.QuantidadeItensPagina;

            PreencherFiltro(entradaProduto.Produto);

            Servico.BrasilDidaticosClient servBrasilDidaticos = new Servico.BrasilDidaticosClient(Comum.Util.RecuperarNomeEndPoint());
            Contrato.RetornoProduto retProduto = servBrasilDidaticos.ProdutoListar(entradaProduto);
            servBrasilDidaticos.Close();

            if (retProduto.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                List<Objeto.Produto> lstProdutos = (from p in retProduto.Produtos select new Objeto.Produto { Codigo = p.Codigo, Nome = p.Nome, Ncm = p.Ncm, ValorPercentagemAtacado = p.ValorPercentagemAtacado, ValorPercentagemVarejo = p.ValorPercentagemVarejo, CodigoFornecedor = p.CodigoFornecedor, Fornecedor = p.Fornecedor, Taxas = p.Taxas, Quantidade = p.Quantidade, ValorBase = p.ValorBase }).ToList();
                foreach (Objeto.Produto p in lstProdutos)
                    dgProdutos.Items.Add(p);
            }

            if (mostrarMsgVazio && retProduto.Codigo == Contrato.Constantes.COD_RETORNO_VAZIO)
                MessageBox.Show(retProduto.Mensagem, "Produto", MessageBoxButton.OK, MessageBoxImage.Information);

            txtCodigo.txtBox.Focus();
        }