/// <summary> /// Create a new PRODUTO object. /// </summary> /// <param name="iD_PRODUTO">Initial value of the ID_PRODUTO property.</param> /// <param name="iD_FORNECEDOR">Initial value of the ID_FORNECEDOR property.</param> /// <param name="nOME_PRODUTO">Initial value of the NOME_PRODUTO property.</param> /// <param name="bOL_ATIVO">Initial value of the BOL_ATIVO property.</param> /// <param name="dATA_ATUALIZACAO">Initial value of the DATA_ATUALIZACAO property.</param> /// <param name="lOGIN_USUARIO">Initial value of the LOGIN_USUARIO property.</param> /// <param name="nUM_VALOR">Initial value of the NUM_VALOR property.</param> /// <param name="nUM_QUANTIDADE">Initial value of the NUM_QUANTIDADE property.</param> public static PRODUTO CreatePRODUTO(global::System.Guid iD_PRODUTO, global::System.Guid iD_FORNECEDOR, global::System.String nOME_PRODUTO, global::System.Boolean bOL_ATIVO, global::System.DateTime dATA_ATUALIZACAO, global::System.String lOGIN_USUARIO, global::System.Decimal nUM_VALOR, global::System.Int32 nUM_QUANTIDADE) { PRODUTO pRODUTO = new PRODUTO(); pRODUTO.ID_PRODUTO = iD_PRODUTO; pRODUTO.ID_FORNECEDOR = iD_FORNECEDOR; pRODUTO.NOME_PRODUTO = nOME_PRODUTO; pRODUTO.BOL_ATIVO = bOL_ATIVO; pRODUTO.DATA_ATUALIZACAO = dATA_ATUALIZACAO; pRODUTO.LOGIN_USUARIO = lOGIN_USUARIO; pRODUTO.NUM_VALOR = nUM_VALOR; pRODUTO.NUM_QUANTIDADE = nUM_QUANTIDADE; return pRODUTO; }
/// <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 SalvarProdutos(Contrato.EntradaProdutos entradaProdutos) { // 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 = entradaProdutos.UsuarioLogado, Chave = entradaProdutos.Chave }); // Verifica se o usuário está autenticado if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO) { if (entradaProdutos.Produtos != null) { // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Se o identificador do fornecedor está vazio if (entradaProdutos.Fornecedor != null && entradaProdutos.Fornecedor.Id == Guid.Empty) // Busca os dados do fornecedor entradaProdutos.Fornecedor = Fornecedor.BuscarFornecedor((from f in context.T_FORNECEDOR where f.COD_FORNECEDOR == entradaProdutos.Fornecedor.Codigo select f).FirstOrDefault()); // Para cada produto existente na lista foreach (Contrato.Produto produto in entradaProdutos.Produtos) { // Se encontrou o fornecedor if (entradaProdutos.Fornecedor != null) // Define o fornecedor do produto produto.Fornecedor = entradaProdutos.Fornecedor; // Verifica se as informações do produto foram informadas string strValidacao = ValidarProdutoPreenchido(produto); // Se existe algum erro if (strValidacao.Length > 0) { retProduto.Codigo = Contrato.Constantes.COD_FILTRO_VAZIO; retProduto.Mensagem = strValidacao; } else { context.ContextOptions.LazyLoadingEnabled = true; // Busca o produto no banco List<Dados.PRODUTO> lstProdutos = (from p in context.T_PRODUTO where p.ID_PRODUTO == produto.Id && produto.Id != Guid.Empty && p.ID_FORNECEDOR == produto.Fornecedor.Id select p).ToList(); // Se existe o produto if (lstProdutos.Count > 0) { // Atualiza o produto lstProdutos.First().COD_BARRAS = produto.CodigoBarras; lstProdutos.First().NUM_QUANTIDADE = produto.Quantidade; lstProdutos.First().NUM_VALOR = produto.ValorBase; lstProdutos.First().NUM_VALOR_ATACADO = produto.ValorPercentagemAtacado; lstProdutos.First().NUM_VALOR_VAREJO = produto.ValorPercentagemVarejo; lstProdutos.First().ID_FORNECEDOR = produto.Fornecedor.Id; lstProdutos.First().NCM_PRODUTO = produto.Ncm; lstProdutos.First().BOL_ATIVO = (bool)produto.Fornecedor.Ativo; lstProdutos.First().DATA_ATUALIZACAO = DateTime.Now; lstProdutos.First().LOGIN_USUARIO = entradaProdutos.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()); } // Se existe o forneedor if (entradaProdutos.Fornecedor != null) { // Verifica se existe alguma taxa associada ao fornecedor if (produto.Fornecedor.Taxas != null) { // Para cada taxa associada foreach (Contrato.Taxa taxa in produto.Fornecedor.Taxas) { Negocio.Taxa.SalvarTaxaProduto(lstProdutos.First(), entradaProdutos.UsuarioLogado, taxa); } } } // Verifica se existe alguma taxa associada ao produto if (produto.Taxas != null) { // Para cada taxa associada foreach (Contrato.Taxa taxa in produto.Taxas) { Negocio.Taxa.SalvarTaxaProduto(lstProdutos.First(), entradaProdutos.UsuarioLogado, taxa); } } } else { // Cria o produto Dados.PRODUTO tProduto = new Dados.PRODUTO(); tProduto.ID_PRODUTO = Guid.NewGuid(); tProduto.COD_PRODUTO = BuscarCodigoProduto(entradaProdutos.EmpresaLogada.Id); tProduto.COD_BARRAS = produto.CodigoBarras; tProduto.NOME_PRODUTO = produto.Nome; tProduto.COD_PRODUTO_FORNECEDOR = produto.CodigoFornecedor; tProduto.ID_FORNECEDOR = produto.Fornecedor.Id; tProduto.NUM_QUANTIDADE = produto.Quantidade; tProduto.NUM_VALOR = produto.ValorBase; tProduto.NUM_VALOR_ATACADO = produto.ValorPercentagemAtacado; tProduto.NUM_VALOR_VAREJO = produto.ValorPercentagemVarejo; tProduto.NCM_PRODUTO = produto.Ncm; tProduto.BOL_ATIVO = produto.Ativo; tProduto.DATA_ATUALIZACAO = DateTime.Now; tProduto.LOGIN_USUARIO = entradaProdutos.UsuarioLogado; // Verifica se existe alguma taxa associada ao produto if (produto.Fornecedor.Taxas != null) { // Para cada taxa associada foreach (Contrato.Taxa taxa in produto.Fornecedor.Taxas) { Negocio.Taxa.SalvarTaxaProduto(tProduto, entradaProdutos.UsuarioLogado, taxa); } } 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; }
/// <summary> /// Deprecated Method for adding a new object to the T_PRODUTO EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToT_PRODUTO(PRODUTO pRODUTO) { base.AddObject("T_PRODUTO", pRODUTO); }
/// <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; }