Пример #1
0
        /// <summary>
        /// Método para listar os fornecedores
        /// </summary>
        /// <param name="Fornecedor">Objeto com os dados do filtro</param>
        /// <returns>Contrato.RetornoFornecedor</returns>
        internal static Contrato.RetornoFornecedor ListarFornecedor(Contrato.EntradaFornecedor entradaFornecedor)
        {
            // Objeto que recebe o retorno do método
            Contrato.RetornoFornecedor retFornecedor = new Contrato.RetornoFornecedor();

            // Objeto que recebe o retorno da sessão
            Contrato.RetornoSessao retSessao = Negocio.Sessao.ValidarSessao(new Contrato.Sessao() { Login = entradaFornecedor.UsuarioLogado, Chave = entradaFornecedor.Chave });

            // Verifica se o usuário está autenticado
            if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Verifica se a empresa não foi informada
                if (string.IsNullOrWhiteSpace(entradaFornecedor.EmpresaLogada.Id.ToString()))
                {
                    entradaFornecedor.EmpresaLogada.Id = Guid.Empty;
                }

                // Loga no banco de dados
                Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS();
                context.ContextOptions.LazyLoadingEnabled = true;

                // Busca o fornecedor no banco
                var lstFornecedores = (from f in context.T_FORNECEDOR.Include("T_FORNECEDOR_TAXA.T_TAXA")
                                       where
                                              (entradaFornecedor.Fornecedor.Ativo == null || f.BOL_ATIVO == entradaFornecedor.Fornecedor.Ativo)
                                           && (entradaFornecedor.EmpresaLogada.Id == Guid.Empty || f.ID_EMPRESA == entradaFornecedor.EmpresaLogada.Id)
                                           && (entradaFornecedor.Fornecedor.Codigo == null || entradaFornecedor.Fornecedor.Codigo == string.Empty || f.COD_FORNECEDOR.Contains(entradaFornecedor.Fornecedor.Codigo))
                                           && (entradaFornecedor.Fornecedor.Nome == null || entradaFornecedor.Fornecedor.Nome == string.Empty || f.NOME_FORNECEDOR.Contains(entradaFornecedor.Fornecedor.Nome))
                                           && (entradaFornecedor.Fornecedor.Tipo == null || f.BOL_PESSOA_FISICA == (entradaFornecedor.Fornecedor.Tipo == Contrato.Enumeradores.Pessoa.Fisica ? true : false))
                                           && (entradaFornecedor.Fornecedor.Cpf_Cnpj == null || entradaFornecedor.Fornecedor.Cpf_Cnpj == string.Empty || f.CPF_CNJP_FORNECEDOR != null && f.CPF_CNJP_FORNECEDOR.StartsWith(entradaFornecedor.Fornecedor.Cpf_Cnpj))
                                       select new { f, t = f.T_FORNECEDOR_TAXA}).ToList();

                // Verifica se foi encontrado algum registro
                if (lstFornecedores.Count > 0)
                {
                    // Preenche o objeto de retorno
                    retFornecedor.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO;

                    // Inicializa a lista de fornecedores
                    retFornecedor.Fornecedores = new List<Contrato.Fornecedor>();

                    // Para cada fornecedor existente na lista
                    foreach (var item in lstFornecedores)
                    {
                        retFornecedor.Fornecedores.Add(new Contrato.Fornecedor()
                        {
                            Id = item.f.ID_FORNECEDOR,
                            Nome = item.f.NOME_FORNECEDOR,
                            Codigo = item.f.COD_FORNECEDOR
                        });

                        if (!entradaFornecedor.PreencherListaSelecao)
                        {
                            retFornecedor.Fornecedores.Last().Cpf_Cnpj = item.f.CPF_CNJP_FORNECEDOR;
                            retFornecedor.Fornecedores.Last().ValorPercentagemAtacado = item.f.NUM_VALOR_ATACADO;
                            retFornecedor.Fornecedores.Last().ValorPercentagemVarejo = item.f.NUM_VALOR_VAREJO;
                            retFornecedor.Fornecedores.Last().Ativo = item.f.BOL_ATIVO;
                            retFornecedor.Fornecedores.Last().Tipo = item.f.BOL_PESSOA_FISICA ? Contrato.Enumeradores.Pessoa.Fisica : Contrato.Enumeradores.Pessoa.Juridica;
                            retFornecedor.Fornecedores.Last().Taxas = Negocio.Taxa.ListarFornecedorTaxa(item.t);
                        }
                    }
                }
                else
                {
                    // Preenche o objeto de retorno
                    retFornecedor.Codigo = Contrato.Constantes.COD_RETORNO_VAZIO;
                    retFornecedor.Mensagem = "Não existe dados para o filtro informado.";
                }
            }
            else
            {
                // retorna quando o usuário não está autenticado
                retFornecedor.Codigo = retSessao.Codigo;
                retFornecedor.Mensagem = retSessao.Mensagem;
            }

            // retorna os dados
            return retFornecedor;
        }
Пример #2
0
        /// <summary>
        /// Método para salvar o fornecedor
        /// </summary>
        /// <param name="entradaFornecedor">Objeto com os dados do fornecedor</param>
        /// <returns>Contrato.RetornoFornecedor</returns>
        internal static Contrato.RetornoFornecedor SalvarFornecedor(Contrato.EntradaFornecedor entradaFornecedor)
        {
            // Objeto que recebe o retorno do método
            Contrato.RetornoFornecedor retFornecedor = new Contrato.RetornoFornecedor();

            // Objeto que recebe o retorno da sessão
            Contrato.RetornoSessao retSessao = Negocio.Sessao.ValidarSessao(new Contrato.Sessao() { Login = entradaFornecedor.UsuarioLogado, Chave = entradaFornecedor.Chave });

            // Verifica se o usuário está autenticado
            if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Verifica se as informações do fornecedor foram informadas
                string strValidacao = ValidarFornecedorPreenchido(entradaFornecedor.Fornecedor);

                // Se existe algum erro
                if (strValidacao.Length > 0)
                {
                    retFornecedor.Codigo = Contrato.Constantes.COD_FILTRO_VAZIO;
                    retFornecedor.Mensagem = strValidacao;
                }
                else
                {
                    // Loga no banco de dados
                    Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS();
                    context.ContextOptions.LazyLoadingEnabled = true;

                    // Busca o fornecedor no banco
                    List<Dados.FORNECEDOR> lstFornecedores = (from f in context.T_FORNECEDOR
                                                              where (f.COD_FORNECEDOR == entradaFornecedor.Fornecedor.Codigo
                                                                    && (entradaFornecedor.Fornecedor.Cpf_Cnpj != null || f.CPF_CNJP_FORNECEDOR == entradaFornecedor.Fornecedor.Cpf_Cnpj)
                                                                    && (entradaFornecedor.EmpresaLogada.Id == Guid.Empty || f.ID_EMPRESA == entradaFornecedor.EmpresaLogada.Id))
                                                                 || (entradaFornecedor.Novo == null && entradaFornecedor.Fornecedor.Id == f.ID_FORNECEDOR)
                                                              select f).ToList();

                    // Verifica se foi encontrado algum registro
                    if (lstFornecedores.Count > 0 && entradaFornecedor.Novo != null && (bool)entradaFornecedor.Novo)
                    {
                        // Preenche o objeto de retorno
                        retFornecedor.Codigo = Contrato.Constantes.COD_REGISTRO_DUPLICADO;
                        retFornecedor.Mensagem = string.Format("O fornecedor de código '{0}' já existe!", lstFornecedores.First().COD_FORNECEDOR);
                    }
                    else
                    {
                        // Se existe o fornecedor
                        if (lstFornecedores.Count > 0)
                        {
                            bool atualizarProdutos = false;

                            // Atualiza o fornecedor
                            lstFornecedores.First().NOME_FORNECEDOR = entradaFornecedor.Fornecedor.Nome;
                            lstFornecedores.First().BOL_PESSOA_FISICA = entradaFornecedor.Fornecedor.Tipo == Contrato.Enumeradores.Pessoa.Fisica ? true : false;
                            lstFornecedores.First().CPF_CNJP_FORNECEDOR = entradaFornecedor.Fornecedor.Cpf_Cnpj;
                            lstFornecedores.First().NUM_VALOR_ATACADO = entradaFornecedor.Fornecedor.ValorPercentagemAtacado;
                            lstFornecedores.First().NUM_VALOR_VAREJO = entradaFornecedor.Fornecedor.ValorPercentagemVarejo;
                            lstFornecedores.First().BOL_ATIVO = (bool)entradaFornecedor.Fornecedor.Ativo;
                            lstFornecedores.First().DATA_ATUALIZACAO = DateTime.Now;
                            lstFornecedores.First().LOGIN_USUARIO = entradaFornecedor.UsuarioLogado;

                            // verifica se o fornecedor foi desativado
                            atualizarProdutos = (bool)entradaFornecedor.Fornecedor.Ativo == false;

                            // Verifica se é para atualizar os produtos
                            if (!atualizarProdutos)
                                // verifica se a quantidade de taxas foi alterada
                                atualizarProdutos = (entradaFornecedor.Fornecedor.Taxas == null && lstFornecedores.First().T_FORNECEDOR_TAXA.Count > 0) || (entradaFornecedor.Fornecedor.Taxas != null && lstFornecedores.First().T_FORNECEDOR_TAXA.Count != entradaFornecedor.Fornecedor.Taxas.Count);

                            // Verifica se é para atualizar os produtos
                            if (entradaFornecedor.Fornecedor.Taxas != null && !atualizarProdutos)
                                // Para cada taxa existente
                                foreach (Contrato.Taxa t in entradaFornecedor.Fornecedor.Taxas)
                                {
                                    // Verifica se é para atualizar os produtos
                                    if (!atualizarProdutos)
                                        // Verifica se alguma informação da taxa foi atualizada
                                        atualizarProdutos = (from ft in lstFornecedores.First().T_FORNECEDOR_TAXA where ft.ID_TAXA == t.Id && (ft.NUM_VALOR != t.Valor || ft.ORD_PRIORIDADE != t.Prioridade) select ft).Count() > 0;
                                    else
                                        break;
                                }

                            // Apaga todas as taxas que estão relacionadas ao fornecedor
                            while (lstFornecedores.First().T_FORNECEDOR_TAXA.Count > 0)
                            {
                                context.T_FORNECEDOR_TAXA.DeleteObject(lstFornecedores.First().T_FORNECEDOR_TAXA.First());
                            }

                            // Preenche as taxas do fornecedor
                            PreencherTaxaFornecedor(entradaFornecedor, lstFornecedores.First());

                            // Verifica se é para atualizar os produtos
                            if (atualizarProdutos)
                                // Atualiza o valor das taxas nos produtos
                                SalvarProdutosFornecedor(entradaFornecedor);
                        }
                        else
                        {
                            // Recupera o código do cliente
                            string codigoFornecedor = string.Empty;
                            if (entradaFornecedor.Fornecedor.Codigo != string.Empty)
                                codigoFornecedor = entradaFornecedor.Fornecedor.Codigo;
                            else
                            {
                                System.Data.Objects.ObjectParameter objCodigoFornecedor = new System.Data.Objects.ObjectParameter("P_CODIGO", typeof(global::System.Int32));
                                context.RETORNAR_CODIGO(Contrato.Constantes.TIPO_COD_FORNECEDOR, entradaFornecedor.EmpresaLogada.Id, objCodigoFornecedor);
                                codigoFornecedor = Util.RecuperaCodigo((int)objCodigoFornecedor.Value, Contrato.Constantes.TIPO_COD_FORNECEDOR);
                            }

                            // Cria o fornecedor
                            Dados.FORNECEDOR tFornecedor = new Dados.FORNECEDOR();
                            tFornecedor.ID_FORNECEDOR = Guid.NewGuid();
                            tFornecedor.COD_FORNECEDOR = codigoFornecedor;
                            tFornecedor.NOME_FORNECEDOR = entradaFornecedor.Fornecedor.Nome;
                            tFornecedor.ID_EMPRESA = entradaFornecedor.EmpresaLogada.Id;
                            tFornecedor.BOL_PESSOA_FISICA = entradaFornecedor.Fornecedor.Tipo == Contrato.Enumeradores.Pessoa.Fisica ? true : false;
                            tFornecedor.CPF_CNJP_FORNECEDOR = entradaFornecedor.Fornecedor.Cpf_Cnpj;
                            tFornecedor.NUM_VALOR_ATACADO = entradaFornecedor.Fornecedor.ValorPercentagemAtacado;
                            tFornecedor.NUM_VALOR_VAREJO = entradaFornecedor.Fornecedor.ValorPercentagemVarejo;
                            tFornecedor.BOL_ATIVO = (bool)entradaFornecedor.Fornecedor.Ativo;
                            tFornecedor.DATA_ATUALIZACAO = DateTime.Now;
                            tFornecedor.LOGIN_USUARIO = entradaFornecedor.UsuarioLogado;

                            // Preenche as taxas do fornecedor
                            PreencherTaxaFornecedor(entradaFornecedor, tFornecedor);

                            // Adiciona o fornecedor na tabela
                            context.AddToT_FORNECEDOR(tFornecedor);
                        }

                        // Salva as alterações
                        context.SaveChanges();

                        // Preenche o objeto de retorno
                        retFornecedor.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO;
                    }
                }
            }
            else
            {
                // retorna quando o usuário não está autenticado
                retFornecedor.Codigo = retSessao.Codigo;
                retFornecedor.Mensagem = retSessao.Mensagem;
            }

            // retorna dos dados
            return retFornecedor;
        }