/// <summary> /// Método para listar os Itens /// </summary> /// <param name="Item">Objeto com os dados do filtro</param> /// <returns>Contrato.RetornoItem</returns> internal static Contrato.RetornoItem ListarItem(Contrato.EntradaItem entradaItem) { // Objeto que recebe o retorno do método Contrato.RetornoItem retItem = new Contrato.RetornoItem(); // Objeto que recebe o retorno da sessão Contrato.RetornoSessao retSessao = Negocio.Sessao.ValidarSessao(new Contrato.Sessao() { Login = entradaItem.UsuarioLogado, Chave = entradaItem.Chave }); // Verifica se o usuário está autenticado if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO) { // Verifica se o fornecedor não foi informado if (entradaItem.Item.Orcamento == null) { entradaItem.Item.Orcamento = new Contrato.Orcamento(); } // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Busca o produto no banco List<Dados.ITEM> lstItems = null; if (entradaItem.Paginar) { lstItems = (from i in context.T_ITEM where (entradaItem.Item.Orcamento.Id == Guid.Empty || i.ID_ORCAMENTO == entradaItem.Item.Orcamento.Id) select i ).OrderBy(o => o.ID_PRODUTO).Skip(entradaItem.PosicaoUltimoItem).Take(entradaItem.CantidadeItens).ToList(); } else { lstItems = (from i in context.T_ITEM where (entradaItem.Item.Orcamento.Id == Guid.Empty || i.ID_ORCAMENTO == entradaItem.Item.Orcamento.Id) select i ).ToList(); } // Verifica se foi encontrado algum registro if (lstItems.Count > 0) { // Preenche o objeto de retorno retItem.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO; retItem.Itens = new List<Contrato.Item>(); foreach (Dados.ITEM item in lstItems) { retItem.Itens.Add(new Contrato.Item() { Id = item.ID_ITEM, Descricao = item.DES_ITEM, Quantidade = item.NUM_QUANTIDADE, ValorCusto = item.NUM_VALOR_CUSTO, ValorUnitario = item.NUM_VALOR_UNITARIO, ValorDesconto = item.NUM_DESCONTO, Produto = Negocio.Produto.BuscarProduto(item.T_PRODUTO), UnidadeMedida = item.T_PRODUTO == null ? null : Negocio.UnidadeMedida.BuscarProdutoUnidadeMedida(item.T_PRODUTO.T_PRODUTO_UNIDADE_MEDIDA.Where(pum => pum.ID_UNIDADE_MEDIDA == item.ID_UNIDADE_MEDIDA).FirstOrDefault()), Orcamento = Negocio.Orcamento.BuscarOrcamento(item.T_ORCAMENTO) }); }; } else { // Preenche o objeto de retorno retItem.Codigo = Contrato.Constantes.COD_RETORNO_VAZIO; retItem.Mensagem = "Não existe dados para o filtro informado."; } } else { // retorna quando o usuário não está autenticado retItem.Codigo = retSessao.Codigo; retItem.Mensagem = retSessao.Mensagem; } // retorna os dados return retItem; }
/// <summary> /// Método para salvar os item do orçamento /// </summary> /// <param name="Item">Objeto com os dados do item</param> /// <returns>Contrato.RetornoTaxa</returns> internal static Contrato.RetornoItem SalvarItemOrcamento(Dados.ORCAMENTO Orcamento, string UsuarioLogado, Contrato.Item Item) { // Objeto que recebe o retorno do método Contrato.RetornoItem retItem = new Contrato.RetornoItem(); // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Cria o item Dados.ITEM tItem = new Dados.ITEM() { ID_ITEM = Guid.NewGuid(), DES_ITEM = Item.Descricao, ID_ORCAMENTO = Orcamento.ID_ORCAMENTO, NUM_QUANTIDADE = Item.Quantidade, NUM_VALOR_CUSTO = Item.ValorCusto, NUM_VALOR_UNITARIO = Item.ValorUnitario, NUM_DESCONTO = Item.ValorDesconto, LOGIN_USUARIO = UsuarioLogado, DATA_ATUALIZACAO = DateTime.Now }; if (Item.Produto != null) { tItem.ID_PRODUTO = Item.Produto.Id; if (Item.UnidadeMedida != null) tItem.ID_UNIDADE_MEDIDA = Item.UnidadeMedida.Id; // Verifica se o orçamento foi aprovado if (Orcamento.T_ESTADO_ORCAMENTO != null && Orcamento.T_ESTADO_ORCAMENTO.COD_ESTADO_ORCAMENTO == string.Format("0{0}", (int)Contrato.Enumeradores.EstadoOrcamento.Aprovado)) { // Atualiza a quantidade de produtos if (Item.UnidadeMedida != null && Item.UnidadeMedida.Id != Guid.Empty) { Contrato.UnidadeMedida uMedida = Item.Produto.UnidadeMedidas.Where(um => um.Id == Item.UnidadeMedida.Id).FirstOrDefault(); if (uMedida != null) { uMedida.Quantidade = uMedida.Quantidade - Item.Quantidade; context.T_PRODUTO_UNIDADE_MEDIDA.Where(pum => pum.ID_UNIDADE_MEDIDA == uMedida.Id && pum.ID_PRODUTO == Item.Produto.Id).FirstOrDefault().NUM_QUANTIDADE = uMedida.Quantidade; } } else { Item.Produto.Quantidade = Item.Produto.Quantidade - Item.Quantidade; context.T_PRODUTO.Where(p => p.ID_PRODUTO == Item.Produto.Id).FirstOrDefault().NUM_QUANTIDADE = Item.Produto.Quantidade; } } } Orcamento.T_ITEM.Add(tItem); // Salva as alterações context.SaveChanges(); // Preenche o objeto de retorno retItem.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO; // retorna dos dados return retItem; }