예제 #1
0
        /// <summary>
        /// Método para buscar o código do fornecedor
        /// </summary>        
        /// <returns>string</returns>
        internal static string BuscarCodigoFornecedor(Guid IdEmpresa)
        {
            // Objeto que recebe o retorno do método
            string retCodigoFornecedor = string.Empty;

            // Loga no banco de dados
            Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS();
            System.Data.Objects.ObjectParameter objCodigoFornecedor = new System.Data.Objects.ObjectParameter("P_CODIGO", typeof(global::System.Int32));
            context.RETORNAR_CODIGO(Contrato.Constantes.TIPO_COD_FORNECEDOR, IdEmpresa, objCodigoFornecedor);

            // Recupera o código do fornecedor
            retCodigoFornecedor = Util.RecuperaCodigo((int)objCodigoFornecedor.Value, Contrato.Constantes.TIPO_COD_FORNECEDOR);

            // retorna os dados
            return retCodigoFornecedor;
        }
예제 #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;
        }
예제 #3
0
        /// <summary>
        /// Método para salvar o cliente
        /// </summary>
        /// <param name="entradaCliente">Objeto com os dados do cliente</param>
        /// <returns>Contrato.RetornoCliente</returns>
        internal static Contrato.RetornoCliente SalvarCliente(Contrato.EntradaCliente entradaCliente)
        {
            // Objeto que recebe o retorno do método
            Contrato.RetornoCliente retCliente = new Contrato.RetornoCliente();

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

            // Verifica se o usuário está autenticado
            if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Verifica se as informações do cliente foram informadas
                string strValidacao = ValidarClientePreenchido(entradaCliente.Cliente);

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

                    // Busca o cliente no banco
                    List<Dados.CLIENTE> lstClientes = (from c in context.T_CLIENTE
                                                              where (c.COD_CLIENTE == entradaCliente.Cliente.Codigo
                                                                     && (entradaCliente.Cliente.Cpf_Cnpj != null || c.CPF_CNJP_CLIENTE == entradaCliente.Cliente.Cpf_Cnpj)
                                                                     && (entradaCliente.EmpresaLogada.Id == Guid.Empty || c.ID_EMPRESA == entradaCliente.EmpresaLogada.Id))
                                                                 || (entradaCliente.Novo == null && entradaCliente.Cliente.Id == c.ID_CLIENTE)
                                                              select c).ToList();

                    // Verifica se foi encontrado algum registro
                    if (lstClientes.Count > 0 && entradaCliente.Novo != null && (bool)entradaCliente.Novo)
                    {
                        // Preenche o objeto de retorno
                        retCliente.Codigo = Contrato.Constantes.COD_REGISTRO_DUPLICADO;
                        retCliente.Mensagem = string.Format("O cliente de código '{0}' já existe!", lstClientes.First().COD_CLIENTE);
                    }
                    else
                    {
                        // Se existe o cliente
                        if (lstClientes.Count > 0)
                        {
                            // Atualiza o cliente
                            lstClientes.First().NOME_CLIENTE = entradaCliente.Cliente.Nome;
                            lstClientes.First().CAIXA_ESCOLAR = entradaCliente.Cliente.CaixaEscolar;
                            lstClientes.First().BOL_ATIVO = entradaCliente.Cliente.Ativo;
                            lstClientes.First().BOL_PESSOA_FISICA = entradaCliente.Cliente.Tipo == Contrato.Enumeradores.Pessoa.Fisica ? true : false;
                            lstClientes.First().CPF_CNJP_CLIENTE = entradaCliente.Cliente.Cpf_Cnpj;
                            lstClientes.First().DES_EMAIL = entradaCliente.Cliente.Email;
                            lstClientes.First().DES_INSCRICAO_ESTADUAL = entradaCliente.Cliente.InscricaoEstadual;
                            lstClientes.First().NUM_TELEFONE = entradaCliente.Cliente.Telefone;
                            lstClientes.First().NUM_CELULAR = entradaCliente.Cliente.Celular;
                            lstClientes.First().DES_ENDERECO = entradaCliente.Cliente.Endereco;
                            lstClientes.First().NUM_ENDERECO = entradaCliente.Cliente.Numero;
                            lstClientes.First().CMP_ENDERECO = entradaCliente.Cliente.Complemento;
                            lstClientes.First().NUM_CEP = entradaCliente.Cliente.Cep;
                            lstClientes.First().DES_BAIRRO = entradaCliente.Cliente.Bairro;
                            lstClientes.First().DES_CIDADE = entradaCliente.Cliente.Cidade;
                            lstClientes.First().COD_ESTADO = entradaCliente.Cliente.Uf == null ? null : entradaCliente.Cliente.Uf.Codigo;
                            lstClientes.First().DES_ESTADO = entradaCliente.Cliente.Uf == null ? null : entradaCliente.Cliente.Uf.Nome;
                            lstClientes.First().DATA_ATUALIZACAO = DateTime.Now;
                            lstClientes.First().LOGIN_USUARIO = entradaCliente.UsuarioLogado;
                            lstClientes.First().ID_CLIENTE_MATRIZ = entradaCliente.Cliente.ClienteMatriz != null ? entradaCliente.Cliente.ClienteMatriz.Id: Guid.Empty;
                        }
                        else
                        {
                            // Recupera o código do cliente
                            string codigoCliente = string.Empty;
                            if (entradaCliente.Cliente.Codigo != string.Empty)
                                codigoCliente = entradaCliente.Cliente.Codigo;
                            else
                            {
                                System.Data.Objects.ObjectParameter objCodigoOrcamento = new System.Data.Objects.ObjectParameter("P_CODIGO", typeof(global::System.Int32));
                                context.RETORNAR_CODIGO(Contrato.Constantes.TIPO_COD_CLIENTE, entradaCliente.EmpresaLogada.Id, objCodigoOrcamento);
                                codigoCliente = Util.RecuperaCodigo((int)objCodigoOrcamento.Value, Contrato.Constantes.TIPO_COD_CLIENTE);
                            }

                            // Cria o cliente
                            Dados.CLIENTE tCliente = new Dados.CLIENTE();
                            tCliente.ID_CLIENTE = Guid.NewGuid();
                            tCliente.COD_CLIENTE = codigoCliente;
                            tCliente.NOME_CLIENTE = entradaCliente.Cliente.Nome;
                            tCliente.ID_EMPRESA = entradaCliente.EmpresaLogada.Id;
                            tCliente.BOL_ATIVO = entradaCliente.Cliente.Ativo;
                            tCliente.CAIXA_ESCOLAR = entradaCliente.Cliente.CaixaEscolar;
                            tCliente.BOL_PESSOA_FISICA = entradaCliente.Cliente.Tipo == Contrato.Enumeradores.Pessoa.Fisica ? true : false;
                            tCliente.CPF_CNJP_CLIENTE = entradaCliente.Cliente.Cpf_Cnpj;
                            tCliente.DES_EMAIL = entradaCliente.Cliente.Email;
                            tCliente.NUM_TELEFONE = entradaCliente.Cliente.Telefone;
                            tCliente.NUM_CELULAR = entradaCliente.Cliente.Celular;
                            tCliente.DES_INSCRICAO_ESTADUAL = entradaCliente.Cliente.InscricaoEstadual;
                            tCliente.DES_ENDERECO = entradaCliente.Cliente.Endereco;
                            tCliente.NUM_ENDERECO = entradaCliente.Cliente.Numero;
                            tCliente.CMP_ENDERECO = entradaCliente.Cliente.Complemento;
                            tCliente.NUM_CEP = entradaCliente.Cliente.Cep;
                            tCliente.DES_BAIRRO = entradaCliente.Cliente.Bairro;
                            tCliente.DES_CIDADE = entradaCliente.Cliente.Cidade;
                            tCliente.COD_ESTADO = entradaCliente.Cliente.Uf == null ? null : entradaCliente.Cliente.Uf.Codigo;
                            tCliente.DES_ESTADO = entradaCliente.Cliente.Uf == null ? null : entradaCliente.Cliente.Uf.Nome;
                            tCliente.DATA_ATUALIZACAO = DateTime.Now;
                            tCliente.LOGIN_USUARIO = entradaCliente.UsuarioLogado;
                            tCliente.ID_CLIENTE_MATRIZ = entradaCliente.Cliente.ClienteMatriz != null ? entradaCliente.Cliente.ClienteMatriz.Id : Guid.Empty;

                            // Adiciona o cliente na tabela
                            context.AddToT_CLIENTE(tCliente);
                        }

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

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

            // retorna dos dados
            return retCliente;
        }
예제 #4
0
        /// <summary>
        /// Método para salvar o orcamento
        /// </summary>
        /// <param name="entradaOrcamento">Objeto com os dados do orcamento</param>
        /// <returns>Contrato.RetornoOrcamento</returns>
        internal static Contrato.RetornoOrcamento SalvarOrcamento(Contrato.EntradaOrcamento entradaOrcamento)
        {
            // Objeto que recebe o retorno do método
            Contrato.RetornoOrcamento retOrcamento = new Contrato.RetornoOrcamento();

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

            // Verifica se o usuário está autenticado
            if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Verifica se as informações do orcamento foram informadas
                string strValidacao = ValidarOrcamentoPreenchido(entradaOrcamento.Orcamento);

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

                    // Busca o orcamento no banco
                    List<Dados.ORCAMENTO> lstOrcamentos = (from p in context.T_ORCAMENTO
                                                           where (p.COD_ORCAMENTO == entradaOrcamento.Orcamento.Codigo
                                                                 && (entradaOrcamento.EmpresaLogada.Id == Guid.Empty || p.ID_EMPRESA == entradaOrcamento.EmpresaLogada.Id))
                                                              || (entradaOrcamento.Novo == null && entradaOrcamento.Orcamento.Id == p.ID_ORCAMENTO)
                                                           select p).ToList();

                    // Verifica se foi encontrado algum registro
                    if (lstOrcamentos.Count > 0 && entradaOrcamento.Novo != null && (bool)entradaOrcamento.Novo)
                    {
                        // Preenche o objeto de retorno
                        retOrcamento.Codigo = Contrato.Constantes.COD_REGISTRO_DUPLICADO;
                        retOrcamento.Mensagem = string.Format("O orcamento de código '{0}' já existe!", lstOrcamentos.First().COD_ORCAMENTO);
                    }
                    else
                    {
                        // Se existe o orcamento
                        if (lstOrcamentos.Count > 0)
                        {
                            // Atualiza o orcamento
                            lstOrcamentos.First().COD_ORCAMENTO = entradaOrcamento.Orcamento.Codigo;
                            lstOrcamentos.First().DATA_ORCAMENTO = entradaOrcamento.Orcamento.Data;
                            lstOrcamentos.First().ID_CLIENTE = entradaOrcamento.Orcamento.Cliente.Id;
                            lstOrcamentos.First().ID_ESTADO_ORCAMENTO = entradaOrcamento.Orcamento.Estado.Id;
                            lstOrcamentos.First().ID_USUARIO_VENDEDOR = entradaOrcamento.Orcamento.Vendedor.Id;
                            lstOrcamentos.First().ID_USUARIO_RESPONSAVEL = entradaOrcamento.Orcamento.Responsavel.Id;
                            lstOrcamentos.First().NUM_DESCONTO = entradaOrcamento.Orcamento.ValorDesconto;
                            lstOrcamentos.First().NUM_PRAZO_ENTREGA = entradaOrcamento.Orcamento.PrazoEntrega;
                            lstOrcamentos.First().NUM_VALIDADE_ORCAMENTO = entradaOrcamento.Orcamento.ValidadeOrcamento;
                            lstOrcamentos.First().DATA_ATUALIZACAO = DateTime.Now;
                            lstOrcamentos.First().LOGIN_USUARIO = entradaOrcamento.UsuarioLogado;

                            // Apaga todos os itens que estão relacionados
                            while (lstOrcamentos.First().T_ITEM.Count > 0)
                            {
                                context.T_ITEM.DeleteObject(lstOrcamentos.First().T_ITEM.First());
                            }

                            // Verifica se existe algum item associado ao orçamento
                            if (entradaOrcamento.Orcamento.Itens != null)
                            {
                                // Para cada item associado
                                foreach (Contrato.Item item in entradaOrcamento.Orcamento.Itens)
                                {
                                    Negocio.Item.SalvarItemOrcamento(lstOrcamentos.First(), entradaOrcamento.UsuarioLogado, item);
                                }
                            }
                        }
                        else
                        {
                            // Recupera o código do orçamento
                            string codigoOrcamento = string.Empty;
                            if (entradaOrcamento.Orcamento.Codigo != string.Empty)
                                codigoOrcamento = entradaOrcamento.Orcamento.Codigo;
                            else
                            {
                                System.Data.Objects.ObjectParameter objCodigoOrcamento = new System.Data.Objects.ObjectParameter("P_CODIGO", typeof(global::System.Int32));
                                context.RETORNAR_CODIGO(Contrato.Constantes.TIPO_COD_ORCAMENTO, entradaOrcamento.EmpresaLogada.Id, objCodigoOrcamento);
                                codigoOrcamento = Util.RecuperaCodigo((int)objCodigoOrcamento.Value, Contrato.Constantes.TIPO_COD_ORCAMENTO);
                            }

                            // Cria o orcamento
                            Dados.ORCAMENTO tOrcamento = new Dados.ORCAMENTO();
                            tOrcamento.ID_ORCAMENTO = Guid.NewGuid();
                            tOrcamento.COD_ORCAMENTO = codigoOrcamento;
                            tOrcamento.DATA_ORCAMENTO = entradaOrcamento.Orcamento.Data;
                            tOrcamento.ID_EMPRESA = entradaOrcamento.EmpresaLogada.Id;
                            tOrcamento.ID_CLIENTE = entradaOrcamento.Orcamento.Cliente.Id;
                            tOrcamento.ID_ESTADO_ORCAMENTO = entradaOrcamento.Orcamento.Estado.Id;
                            tOrcamento.ID_USUARIO_VENDEDOR = entradaOrcamento.Orcamento.Vendedor.Id;
                            tOrcamento.ID_USUARIO_RESPONSAVEL = entradaOrcamento.Orcamento.Responsavel.Id;
                            tOrcamento.NUM_DESCONTO = entradaOrcamento.Orcamento.ValorDesconto;
                            tOrcamento.NUM_PRAZO_ENTREGA = entradaOrcamento.Orcamento.PrazoEntrega;
                            tOrcamento.NUM_VALIDADE_ORCAMENTO = entradaOrcamento.Orcamento.ValidadeOrcamento;
                            tOrcamento.DATA_ATUALIZACAO = DateTime.Now;
                            tOrcamento.LOGIN_USUARIO = entradaOrcamento.UsuarioLogado;

                            // Verifica se existe algum item associado ao orçamento
                            if (entradaOrcamento.Orcamento.Itens != null)
                            {
                                // Para cada item associado
                                foreach (Contrato.Item item in entradaOrcamento.Orcamento.Itens)
                                {
                                    Negocio.Item.SalvarItemOrcamento(tOrcamento, entradaOrcamento.UsuarioLogado, item);
                                }
                            }

                            context.AddToT_ORCAMENTO(tOrcamento);
                        }

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

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

            // retorna dos dados
            return retOrcamento;
        }
예제 #5
0
        /// <summary>
        /// Método para salvar o produto
        /// </summary>
        /// <param name="entradaProduto">Objeto com os dados do produto</param>
        /// <returns>Contrato.RetornoProduto</returns>
        internal static Contrato.RetornoProduto SalvarProduto(Contrato.EntradaProduto entradaProduto)
        {
            // Objeto que recebe o retorno do método
            Contrato.RetornoProduto retProduto = new Contrato.RetornoProduto();

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

            // Verifica se o usuário está autenticado
            if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO)
            {
                // Verifica se as informações do produto foram informadas
                string strValidacao = ValidarProdutoPreenchido(entradaProduto.Produto);

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

                    // Busca o produto no banco
                    List<Dados.PRODUTO> lstProdutos = (from p in context.T_PRODUTO
                                                       where (p.COD_PRODUTO == entradaProduto.Produto.Codigo
                                                          || (entradaProduto.Novo == null && entradaProduto.Produto.Id == p.ID_PRODUTO)
                                                          || (entradaProduto.Novo.Value == true && p.COD_PRODUTO_FORNECEDOR == entradaProduto.Produto.CodigoFornecedor && p.COD_PRODUTO_FORNECEDOR != string.Empty && p.ID_FORNECEDOR == entradaProduto.Produto.Fornecedor.Id))
                                                       select p).ToList();

                    // Verifica se foi encontrado algum registro
                    if (lstProdutos.Count > 0 && entradaProduto.Novo != null && (bool)entradaProduto.Novo)
                    {
                        // Preenche o objeto de retorno
                        retProduto.Codigo = Contrato.Constantes.COD_REGISTRO_DUPLICADO;
                        retProduto.Mensagem = string.Format("O produto de código '{0}' já existe!", lstProdutos.First().COD_PRODUTO);
                    }
                    else
                    {
                        // Se existe o produto
                        if (lstProdutos.Count > 0)
                        {
                            // Atualiza o produto
                            lstProdutos.First().NOME_PRODUTO = entradaProduto.Produto.Nome;
                            lstProdutos.First().COD_BARRAS = entradaProduto.Produto.CodigoBarras;
                            lstProdutos.First().NUM_QUANTIDADE = entradaProduto.Produto.Quantidade;
                            lstProdutos.First().NUM_VALOR = entradaProduto.Produto.ValorBase;
                            lstProdutos.First().NUM_VALOR_ATACADO = entradaProduto.Produto.ValorPercentagemAtacado;
                            lstProdutos.First().NUM_VALOR_VAREJO = entradaProduto.Produto.ValorPercentagemVarejo;
                            lstProdutos.First().COD_PRODUTO_FORNECEDOR = entradaProduto.Produto.CodigoFornecedor;
                            lstProdutos.First().ID_FORNECEDOR = entradaProduto.Produto.Fornecedor.Id;
                            lstProdutos.First().NCM_PRODUTO = entradaProduto.Produto.Ncm;
                            lstProdutos.First().BOL_ATIVO = entradaProduto.Produto.Ativo;
                            lstProdutos.First().DATA_ATUALIZACAO = DateTime.Now;
                            lstProdutos.First().LOGIN_USUARIO = entradaProduto.UsuarioLogado;

                            // Apaga todas as taxas que estão relacionados
                            while (lstProdutos.First().T_PRODUTO_TAXA.Count > 0)
                            {
                                context.T_PRODUTO_TAXA.DeleteObject(lstProdutos.First().T_PRODUTO_TAXA.First());
                            }

                            // Verifica se existe alguma taxa associada ao produto
                            if (entradaProduto.Produto.Taxas != null)
                            {
                                // Para cada taxa associada
                                foreach (Contrato.Taxa taxa in entradaProduto.Produto.Taxas)
                                {
                                    Negocio.Taxa.SalvarTaxaProduto(lstProdutos.First(), entradaProduto.UsuarioLogado, taxa);
                                }
                            }

                            // Apaga todas as unidades de medidas que estão relacionados
                            while (lstProdutos.First().T_PRODUTO_UNIDADE_MEDIDA.Count > 0)
                            {
                                context.T_PRODUTO_UNIDADE_MEDIDA.DeleteObject(lstProdutos.First().T_PRODUTO_UNIDADE_MEDIDA.First());
                            }

                            // Verifica se existe alguma unidade de medida associado ao produto
                            if (entradaProduto.Produto.UnidadeMedidas != null)
                            {
                                // Para cada taxa associada
                                foreach (Contrato.UnidadeMedida unidadeMedida in entradaProduto.Produto.UnidadeMedidas)
                                {
                                    Negocio.UnidadeMedida.SalvarUnidadeMedidaProduto(lstProdutos.First(), entradaProduto.UsuarioLogado, unidadeMedida);
                                }
                            }
                        }
                        else
                        {
                            // Recupera o código do produto
                            string codigoProduto = string.Empty;
                            if (entradaProduto.Produto.Codigo != string.Empty)
                                codigoProduto = entradaProduto.Produto.Codigo;
                            else
                            {
                                System.Data.Objects.ObjectParameter objCodigoProduto = new System.Data.Objects.ObjectParameter("P_CODIGO", typeof(global::System.Int32));
                                context.RETORNAR_CODIGO(Contrato.Constantes.TIPO_COD_PRODUTO, entradaProduto.EmpresaLogada.Id, objCodigoProduto);
                                codigoProduto = Util.RecuperaCodigo((int)objCodigoProduto.Value, Contrato.Constantes.TIPO_COD_PRODUTO);
                            }

                            // Cria o produto
                            Dados.PRODUTO tProduto = new Dados.PRODUTO();
                            tProduto.ID_PRODUTO = Guid.NewGuid();
                            tProduto.COD_PRODUTO = codigoProduto;
                            tProduto.COD_BARRAS = entradaProduto.Produto.CodigoBarras;
                            tProduto.NOME_PRODUTO = entradaProduto.Produto.Nome;
                            tProduto.COD_PRODUTO_FORNECEDOR = entradaProduto.Produto.CodigoFornecedor;
                            tProduto.ID_FORNECEDOR = entradaProduto.Produto.Fornecedor.Id;
                            tProduto.NCM_PRODUTO = entradaProduto.Produto.Ncm;
                            tProduto.NUM_VALOR = entradaProduto.Produto.ValorBase;
                            tProduto.NUM_VALOR_ATACADO = entradaProduto.Produto.ValorPercentagemAtacado;
                            tProduto.NUM_VALOR_VAREJO = entradaProduto.Produto.ValorPercentagemVarejo;
                            tProduto.NUM_QUANTIDADE = entradaProduto.Produto.Quantidade;
                            tProduto.BOL_ATIVO = entradaProduto.Produto.Ativo;
                            tProduto.DATA_ATUALIZACAO = DateTime.Now;
                            tProduto.LOGIN_USUARIO = entradaProduto.UsuarioLogado;

                            // Verifica se existe alguma taxa associada ao produto
                            if (entradaProduto.Produto.Taxas != null)
                            {
                                // Para cada taxa associada
                                foreach (Contrato.Taxa taxa in entradaProduto.Produto.Taxas)
                                {
                                    Negocio.Taxa.SalvarTaxaProduto(tProduto, entradaProduto.UsuarioLogado, taxa);
                                }
                            }

                            // Verifica se existe alguma unidade de medida associado ao produto
                            if (entradaProduto.Produto.UnidadeMedidas != null)
                            {
                                // Para cada taxa associada
                                foreach (Contrato.UnidadeMedida unidadeMedida in entradaProduto.Produto.UnidadeMedidas)
                                {
                                    Negocio.UnidadeMedida.SalvarUnidadeMedidaProduto(lstProdutos.First(), entradaProduto.UsuarioLogado, unidadeMedida);
                                }
                            }

                            context.AddToT_PRODUTO(tProduto);
                        }

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

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

            // retorna dos dados
            return retProduto;
        }