Exemplo n.º 1
0
        public async Task <bool> RegistraVistoAprovacaoAsyncById(int idNotaCompra, int usuarioId)
        {
            Usuario    usuario = _context.Usuario.Find(usuarioId);
            NotaCompra nf      = await _context.NotasCompra.Include(n => n.HistAprovNotasCompra).SingleAsync(n => n.Id == idNotaCompra);

            ConfiguracaoFaixaVistosAprovacoes ConfFaixaVistAprov = await _context.ConfFaixaVistAprov.Where(conf => conf.FaixaMin <= nf.ValorTotal && nf.ValorTotal <= conf.FaixaMax).SingleAsync();

            //Verifica se Usuario já nao aprovou/Vistoriou Nota
            bool usuarioJaRegistrou = (nf.HistAprovNotasCompra.Where(h => h.Id == idNotaCompra && h.Usuario == usuario).Count() != 0);
            //Verifica se Nota Precisa de Visto e Aprovacao dado pepel do usuario
            bool podeRegistrarNF = (usuario.Papel == Papel.Visto && nf.PrecisaVisto(ConfFaixaVistAprov.Vistos)) || (usuario.Papel == Papel.Aprovacao && nf.PrecisaAprovacao(ConfFaixaVistAprov.Vistos, ConfFaixaVistAprov.Aprovacoes));

            //Registra VistoAprov
            if (!usuarioJaRegistrou && podeRegistrarNF)
            {
                HistoricoAprovacaoNotaCompra HistAprovNF = new HistoricoAprovacaoNotaCompra {
                    Data         = DateTime.Now,
                    UsuarioId    = usuario.Id,
                    Operacao     = usuario.Papel == Papel.Visto ? Operacao.Visto : Operacao.Aprovacao,
                    NotaCompraId = nf.Id
                };
                _context.Add(HistAprovNF);
                await _context.SaveChangesAsync();

                // Aprova a Nota
                if (nf.PodeAprovar(ConfFaixaVistAprov.Vistos, ConfFaixaVistAprov.Aprovacoes))
                {
                    nf.Status = Status.Aprovada;
                    _context.Update(nf);
                    return(await _context.SaveChangesAsync() > 0);
                }
                return(true);
            }
            return(false);
        }
        public int ActualizarNotaCompra(RegistrarActualizarNotaCompraRequestDTO request)
        {
            NotaCompra notaCompra = new NotaCompra();

            notaCompra.GuiaRecepcionMateriaPrimaId = request.GuiaRecepcionMateriaPrimaId;
            notaCompra.NotaCompraId         = request.NotaCompraId;
            notaCompra.EmpresaId            = request.EmpresaId;
            notaCompra.Numero               = request.Numero;
            notaCompra.UnidadMedidaIdPesado = request.UnidadMedidaIdPesado;
            notaCompra.CantidadPesado       = request.CantidadPesado;
            notaCompra.KilosBrutosPesado    = request.KilosBrutosPesado;
            notaCompra.TaraPesado           = request.TaraPesado;
            notaCompra.KilosNetosPesado     = request.KilosNetosPesado;
            notaCompra.DescuentoPorHumedad  = request.DescuentoPorHumedad;
            notaCompra.KilosNetosDescontar  = request.KilosNetosDescontar;
            notaCompra.KilosNetosPagar      = request.KilosNetosPagar;
            notaCompra.QQ55                       = request.QQ55;
            notaCompra.TipoId                     = request.TipoId;
            notaCompra.MonedaId                   = request.MonedaId;
            notaCompra.PrecioGuardado             = request.PrecioGuardado;
            notaCompra.PrecioPagado               = request.PrecioPagado;
            notaCompra.Importe                    = request.Importe;
            notaCompra.EstadoId                   = NotaCompraEstados.PorLiquidar;
            notaCompra.FechaUltimaActualizacion   = DateTime.Now;
            notaCompra.UsuarioUltimaActualizacion = request.UsuarioNotaCompra;
            notaCompra.Observaciones              = request.Observaciones;
            notaCompra.ValorId                    = request.ValorId;

            int affected = _INotaCompraRepository.Actualizar(notaCompra);

            return(affected);
        }
Exemplo n.º 3
0
        public async void TestGetNotasComprasAsyncByFilterDate()
        {
            // In-memory database only exists while the connection is open
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var options = new DbContextOptionsBuilder <NotaCompraContext>()
                          .UseSqlite(connection)
                          .Options;

            using (var context = new NotaCompraContext(options))
            {
                // Create the schema in the database
                context.Database.EnsureCreated();

                INotaCompraRepository nfCompraRepository = new NotaCompraRepository(context);

                // Testa Filtro por data inicial e final
                DateTime     dtInicio          = new DateTime(2019, 12, 01);
                DateTime     dtFim             = new DateTime(2019, 12, 31);
                Usuario      userAuxiliar      = context.Usuario.Find(4);
                NotaCompra[] nfComprasAuxiliar = await nfCompraRepository.GetNotasComprasAsyncByFilterDate(dtInicio, dtFim, userAuxiliar.Id);

                Assert.True(nfComprasAuxiliar.Count() == 4);

                // Notas Estao no Limite do Papel do Usuario
                Usuario      userVendedor      = context.Usuario.Find(3);
                NotaCompra[] nfComprasVendedor = await nfCompraRepository.GetNotasComprasAsyncByFilterDate(dtInicio, dtFim, userVendedor.Id);

                Assert.True(nfComprasVendedor.Count() == 2);

                // Estao no Status do Usuario
                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(2, userAuxiliar.Id);

                Usuario      userSubGerente      = context.Usuario.Find(2);
                NotaCompra[] nfComprasSubGerente = await nfCompraRepository.GetNotasComprasAsyncByFilterDate(dtInicio, dtFim, userSubGerente.Id);

                Assert.True(nfComprasSubGerente.Count() == 1);

                // Usuario Não Registrou Visto ou Aprovacao para a Nota
                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(4, userAuxiliar.Id);

                nfComprasAuxiliar = await nfCompraRepository.GetNotasComprasAsyncByFilterDate(dtInicio, dtFim, userAuxiliar.Id);

                NotaCompra nfFaixa4 = context.NotasCompra.AsNoTracking().Include(n => n.HistAprovNotasCompra).Single(n => n.Id == 4);
                Assert.True(nfFaixa4.Status == Status.Pendente);
                Assert.True(nfComprasAuxiliar.Count() == 2);
            }
        }
Exemplo n.º 4
0
 public NotaCompraViewModel ToViewModel(NotaCompra model, Usuario usuarioLogado)
 {
     return(new NotaCompraViewModel()
     {
         Id = model.Id,
         DataEmissao = model.DataEmissao.ToShortDateString(),
         ValorMercadoria = model.ValorMercadoria.ToString("n2"),
         ValorDesconto = model.ValorDesconto.ToString("n2"),
         ValorFrete = model.ValorFrete.ToString("n2"),
         ValorTotal = model.ValorTotal.ToString("n2"),
         Status = model.Status == (byte)TipoStatus.Pendente ? "Pendente" : "Aprovada",
         TipoOperacao = usuarioLogado.Login.Equals("user0") ? 0 : usuarioLogado.Papel
     });
 }
Exemplo n.º 5
0
        public int Actualizar(NotaCompra notaCompra)
        {
            int result = 0;

            var parameters = new DynamicParameters();

            parameters.Add("@NotaCompraId", notaCompra.NotaCompraId);
            parameters.Add("@GuiaRecepcionMateriaPrimaId", notaCompra.GuiaRecepcionMateriaPrimaId);
            parameters.Add("@EmpresaId", notaCompra.EmpresaId);
            parameters.Add("@Numero", notaCompra.Numero);
            parameters.Add("@UnidadMedidaIdPesado", notaCompra.UnidadMedidaIdPesado);
            parameters.Add("@CantidadPesado", notaCompra.CantidadPesado);
            parameters.Add("@KilosBrutosPesado", notaCompra.KilosBrutosPesado);
            parameters.Add("@TaraPesado", notaCompra.TaraPesado);
            parameters.Add("@KilosNetosPesado", notaCompra.KilosNetosPesado);
            parameters.Add("@DescuentoPorHumedad", notaCompra.DescuentoPorHumedad);
            parameters.Add("@KilosNetosDescontar", notaCompra.KilosNetosDescontar);
            parameters.Add("@KilosNetosPagar", notaCompra.KilosNetosPagar);
            parameters.Add("@QQ55", notaCompra.QQ55);
            parameters.Add("@ValorId", notaCompra.ValorId);
            parameters.Add("@TipoId", notaCompra.TipoId);
            parameters.Add("@MonedaId", notaCompra.MonedaId);
            parameters.Add("@PrecioPagado", notaCompra.PrecioPagado);
            parameters.Add("@PrecioGuardado", notaCompra.PrecioGuardado);
            parameters.Add("@Importe", notaCompra.Importe);
            parameters.Add("@EstadoId", notaCompra.EstadoId);
            parameters.Add("@FechaUltimaActualizacion", notaCompra.FechaUltimaActualizacion);
            parameters.Add("@UsuarioUltimaActualizacion", notaCompra.UsuarioUltimaActualizacion);
            parameters.Add("@Observaciones", notaCompra.Observaciones);


            using (IDbConnection db = new SqlConnection(_connectionString.Value.CoffeeConnectDB))
            {
                result = db.Execute("uspNotaCompraActualizar", parameters, commandType: CommandType.StoredProcedure);
            }


            return(result);
        }
Exemplo n.º 6
0
        public async void TestRegistraVistoAprovacaoAsyncById()
        {
            // In-memory database only exists while the connection is open
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var options = new DbContextOptionsBuilder <NotaCompraContext>()
                          .UseSqlite(connection)
                          .Options;

            using (var context = new NotaCompraContext(options))
            {
                // Create the schema in the database
                context.Database.EnsureCreated();

                INotaCompraRepository nfCompraRepository = new NotaCompraRepository(context);
                //Testa Visto e aprovacao
                Usuario userAuxiliar   = context.Usuario.Find(4);
                Usuario userSubGerente = context.Usuario.Find(2);
                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(1, userAuxiliar.Id);

                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(2, userAuxiliar.Id);

                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(2, userSubGerente.Id);

                NotaCompra nfFaixa1 = context.NotasCompra.AsNoTracking().Include(n => n.HistAprovNotasCompra).Single(n => n.Id == 1);
                NotaCompra nfFaixa2 = context.NotasCompra.AsNoTracking().Include(n => n.HistAprovNotasCompra).Single(n => n.Id == 2);

                int numVistosNfFaixa1 = nfFaixa1.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Visto).Count();
                int numVistosNfFaixa2 = nfFaixa2.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Visto).Count();
                int numAprovaNfFaixa2 = nfFaixa2.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Aprovacao).Count();
                Assert.True(numVistosNfFaixa1 == 1);
                Assert.True(numVistosNfFaixa2 == 1);
                Assert.True(numAprovaNfFaixa2 == 1);

                //Testa Unico Visto ou aprovacao Para mesma nota
                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(1, userAuxiliar.Id);

                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(2, userAuxiliar.Id);

                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(2, userSubGerente.Id);

                numVistosNfFaixa1 = nfFaixa1.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Visto).Count();
                numVistosNfFaixa2 = nfFaixa2.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Visto).Count();
                numAprovaNfFaixa2 = nfFaixa2.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Aprovacao).Count();
                Assert.True(numVistosNfFaixa1 == 1);
                Assert.True(numVistosNfFaixa2 == 1);
                Assert.True(numAprovaNfFaixa2 == 1);

                //Testa nao Aprovar se quantidade de vistos nao for suficiente
                await nfCompraRepository.RegistraVistoAprovacaoAsyncById(3, userSubGerente.Id);

                NotaCompra nfFaixa3          = context.NotasCompra.Include(n => n.HistAprovNotasCompra).Single(n => n.Id == 3);
                int        numAprovaNfFaixa3 = nfFaixa1.HistAprovNotasCompra.Where(h => h.Operacao == Operacao.Aprovacao).Count();
                Assert.True(numAprovaNfFaixa3 == 0);

                //Testa Nota Status Aprovada quando atinge numero de vistos e aprovações suficientes
                Assert.True(nfFaixa1.Status == Status.Aprovada);
                Assert.True(nfFaixa2.Status == Status.Aprovada);
                Assert.True(nfFaixa3.Status == Status.Pendente);
            }
        }