Beispiel #1
0
        public IActionResult EditEntrada(int id)
        {
            ViewBag.Diaria = _context.Servicos.Where(s => s.ServicoTipo == ServicoTipo.DIÁRIA && s.Situacao == Situacao.ATIVO).ToList();

            var animaisEntrada = _context.AnimaisEntradas.FirstOrDefault(p => p.Id == id);

            AnimaisServicos servicoLancado = _context.AnimaisServicos
                                             .Include(p => p.Servico)
                                             .Include(a => a.Animais)
                                             .ToList()
                                             .FirstOrDefault(p => p.Id == id);


            return(View(animaisEntrada));
        }
Beispiel #2
0
        public IActionResult EditLancamentoServico(AnimaisServicos animaisServicos)
        {
            if (animaisServicos.ServicoSituacao == ServicoSituacao.CANCELADO)
            {
                animaisServicos.DataCancelamento = DateTime.Now;
            }
            else
            {
                animaisServicos.Motivo           = null;
                animaisServicos.DataCancelamento = null;
            }


            _context.AnimaisServicos.Update(animaisServicos);
            _context.SaveChanges();

            return(RedirectToRoute(new { Controller = "Animal", Action = "Edit", id = animaisServicos.AnimaisId }));
        }
Beispiel #3
0
        public IActionResult EditLancamentoServico(int id)
        {
            if (id > 0)
            {
                ViewBag.ServicoId = _context.Servicos.OrderBy(x => x.Nome).Where(s => s.ServicoTipo != ServicoTipo.DIÁRIA).ToList();

                ViewBag.DoadoraId = _context.Animais
                                    .Where(x => x.AnimalTipo == AnimalTipo.DOADORA &&
                                           x.Situacao == Situacao.ATIVO)
                                    .ToList();
                ViewBag.GaranhaoId = _context.Animais
                                     .Where(x => x.AnimalTipo == AnimalTipo.GARANHÃO &&
                                            x.Situacao == Situacao.ATIVO)
                                     .ToList();
                ViewBag.ReceptoraId = _context.Animais
                                      .Where(x => x.AnimalTipo == AnimalTipo.RECEPTORA &&
                                             x.Situacao == Situacao.ATIVO)
                                      .ToList();
                ViewBag.SemenId = _context.Animais
                                  .Where(x => x.AnimalTipo == AnimalTipo.SÉMEN &&
                                         x.Situacao == Situacao.ATIVO)
                                  .ToList();



                AnimaisServicos servicoLancado = _context.AnimaisServicos
                                                 .Include(p => p.Servico)
                                                 .Include(a => a.Animais)
                                                 .ToList()
                                                 .FirstOrDefault(p => p.Id == id);



                #region Processo que envia o tipo do animal para o processo de edição do serviço lançado.
                string tipo = _context.Animais.Where(x => x.Id == servicoLancado.AnimaisId).Select(p => p.AnimalTipo.ToString()).FirstOrDefault();

                ViewBag.TipoAnimal = tipo;
                #endregion

                return(View(servicoLancado));
            }
            return(View());
        }
Beispiel #4
0
        public IActionResult Create(Faturamento faturamento)
        {
            string mes = faturamento.DataApuracao.Value.Month.ToString().PadLeft(2, '0');
            string ano = faturamento.DataApuracao.Value.Year.ToString();
            //string referencia = mes + "/" + ano;
            string      referencia     = faturamento.Referencia;
            Faturamento objFaturamento = new Faturamento();
            int         FaturaId       = 0;

            //Verifica se já existe faturamento para o proprietário para o mês de referência
            //int FaturaId = RetornaFatura(faturamento.ProprietarioId, referencia);

            /*
             * if (FaturaId == null)
             * {
             *  //Cria o registro de faturamento
             *
             *  objFaturamento.ProprietarioId = faturamento.ProprietarioId;
             *  objFaturamento.Valor = "0,00";
             *  objFaturamento.Situacao = FaturamentoSituacao.PENDENTE;
             *  objFaturamento.Data = DateTime.Now;
             *  objFaturamento.Referencia = faturamento.Referencia;
             *
             *  _context.Faturamentos.Add(objFaturamento);
             *  _context.SaveChanges();
             *
             *  FaturaId = objFaturamento.Id;
             * }*/


            List <AnimaisServicos> listServicoProprietario = new List <AnimaisServicos>();

            #region Identifica os serviços realizados para animais vinculados em Proprietários para o período.
            if (faturamento.ProprietarioId != 0)
            {
                listServicoProprietario = (from p in _context.Proprietarios
                                           join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId
                                           join a in _context.Animais on ap.AnimaisId equals a.Id
                                           join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId
                                           where aass.Data.ToString("MM/yyyy") == referencia &&
                                           p.Id == faturamento.ProprietarioId &&
                                           aass.Data <= faturamento.DataApuracao &&
                                           p.Situacao == Situacao.ATIVO &&
                                           ap.DataAquisicao <= faturamento.DataApuracao &&
                                           ap.DataValidade > faturamento.DataApuracao &&
                                           aass.Faturamento == "N" &&
                                           aass.ServicoSituacao == ServicoSituacao.REALIZADO
                                           select new AnimaisServicos
                {
                    Id = aass.Id
                }
                                           ).Distinct().ToList();
            }
            else
            {
                listServicoProprietario = (from p in _context.Proprietarios
                                           join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId
                                           join a in _context.Animais on ap.AnimaisId equals a.Id
                                           join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId
                                           where aass.Data.ToString("MM/yyyy") == referencia &&
                                           aass.Data <= faturamento.DataApuracao &&
                                           p.Situacao == Situacao.ATIVO &&
                                           ap.DataAquisicao <= faturamento.DataApuracao &&
                                           ap.DataValidade > faturamento.DataApuracao &&
                                           aass.Faturamento == "N" &&
                                           aass.ServicoSituacao == ServicoSituacao.REALIZADO
                                           select new AnimaisServicos
                {
                    Id = aass.Id
                }
                                           ).Distinct().ToList();
            }
            #endregion

            //Inicia o processo apenas se existirem serviços lançados em animais que possuem proprietário
            if (listServicoProprietario.Count > 0)
            {
                foreach (var item in listServicoProprietario)
                {
                    AnimaisServicos ObjAnimaisServicos = _context.AnimaisServicos.FirstOrDefault(s => s.Id == item.Id);

                    if (listServicoProprietario.Count > 0)
                    {
                        //Verifica se o animal possui proprietário apto para cobrança de acordo com a data de realização do serviço.
                        List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios
                                                               join p in _context.Proprietarios on ap.ProprietarioId equals p.Id
                                                               join a in _context.Animais on ap.AnimaisId equals a.Id
                                                               join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId
                                                               where aass.Id == item.Id &&
                                                               ap.AnimaisId == ObjAnimaisServicos.AnimaisId &&
                                                               p.Situacao == Situacao.ATIVO &&
                                                               ap.DataAquisicao <= ObjAnimaisServicos.Data &&
                                                               ap.DataValidade > ObjAnimaisServicos.Data &&
                                                               aass.Faturamento == "N" &&
                                                               aass.ServicoSituacao == ServicoSituacao.REALIZADO
                                                               select p).ToList();

                        int totalProprietario = LstProprietario.Count();

                        //Quando o animal do serviço realizado possui mais de um proprietário realiza loop para rateio do serviço que será faturado.
                        if (totalProprietario >= 2)
                        {
                            for (int i = 0; i < LstProprietario.Count(); i++)
                            {
                                //Verifica se existe fatura o Proprietário para referência informada
                                FaturaId = RetornaFatura(LstProprietario[i].Id, referencia);

                                FaturamentoServicos faturamentoServicos = new FaturamentoServicos();

                                faturamentoServicos.ProprietarioId    = LstProprietario[i].Id;
                                faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id;
                                faturamentoServicos.AnimaisId         = ObjAnimaisServicos.AnimaisId;
                                faturamentoServicos.ServicoId         = ObjAnimaisServicos.ServicoId;

                                decimal valor = ((Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100) / totalProprietario);
                                //faturamentoServicos.Valor  = Decimal.Round((valor), 2).ToString();

                                faturamentoServicos.Valor = Convert.ToDecimal(valor).ToString();

                                faturamentoServicos.DataFaturamento = DateTime.Now;

                                //DateTime dataReferenciaFormatada = Convert.ToDateTime(faturamento.Referencia);
                                faturamentoServicos.Referencia    = referencia;
                                faturamentoServicos.FaturamentoId = FaturaId;

                                faturamentoServicos.DoadoraId   = ObjAnimaisServicos.DoadoraId;
                                faturamentoServicos.GaranhaoId  = ObjAnimaisServicos.GaranhaoId;
                                faturamentoServicos.ReceptoraId = ObjAnimaisServicos.ReceptoraId;
                                faturamentoServicos.SemenId     = ObjAnimaisServicos.SemenId;

                                //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário.
                                _context.FaturamentoServicos.Add(faturamentoServicos);
                                _context.SaveChanges();
                            }
                        }
                        else
                        {
                            //Verifica se existe fatura o Proprietário para referência informada
                            FaturaId = RetornaFatura(LstProprietario[0].Id, referencia);

                            FaturamentoServicos faturamentoServicos = new FaturamentoServicos();

                            faturamentoServicos.ProprietarioId    = LstProprietario[0].Id;
                            faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id;
                            faturamentoServicos.AnimaisId         = ObjAnimaisServicos.AnimaisId;
                            faturamentoServicos.ServicoId         = ObjAnimaisServicos.ServicoId;
                            faturamentoServicos.Valor             = (Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100).ToString();
                            faturamentoServicos.DataFaturamento   = DateTime.Now;

                            //DateTime dataReferenciaFormatada = Convert.ToDateTime(faturamento.Referencia);
                            faturamentoServicos.Referencia    = referencia;
                            faturamentoServicos.FaturamentoId = FaturaId;

                            faturamentoServicos.DoadoraId   = ObjAnimaisServicos.DoadoraId;
                            faturamentoServicos.GaranhaoId  = ObjAnimaisServicos.GaranhaoId;
                            faturamentoServicos.ReceptoraId = ObjAnimaisServicos.ReceptoraId;
                            faturamentoServicos.SemenId     = ObjAnimaisServicos.SemenId;

                            _context.FaturamentoServicos.Add(faturamentoServicos);
                            _context.SaveChanges();
                        }
                    }
                    //Atualiza o serviço realizado no animal para item incluído no processo de faturamento.
                    ObjAnimaisServicos.Faturamento = "S";
                    _context.AnimaisServicos.Update(ObjAnimaisServicos);
                    _context.SaveChanges();
                }
            }

            //Após o processo de validação e rateio dos serviços do proprietário devem ser criadas as informações na tabela Faturamento
            //e atualizar os vinculos com a tabela faturamentoservicos.
            List <Faturamento> LstFaturamento = (from fs in _context.FaturamentoServicos
                                                 join p in _context.Proprietarios on fs.ProprietarioId equals p.Id
                                                 //where fs.Referencia.ToString("MM/yyyy") == faturamento.Referencia
                                                 where fs.Referencia == referencia
                                                 group fs by fs.Proprietario into g
                                                 select new Faturamento
            {
                Proprietario = g.Key,
                Valor = g.Sum(s => Convert.ToDecimal(s.Valor) / 100).ToString(),
                Situacao = FaturamentoSituacao.PENDENTE,
                Referencia = g.First().Referencia
            }
                                                 ).ToList();


            //////////////////////////Processo de Faturamento das Diárias///////////////////////////////////////////////
            ///
            List <AnimaisEntrada> listEntradasProprietario = new List <AnimaisEntrada>();

            #region Identifica as entradas para animais vinculados em Proprietários para o período.
            if (faturamento.ProprietarioId != 0)
            {
                listEntradasProprietario = (from p in _context.Proprietarios
                                            join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId
                                            join a in _context.Animais on ap.AnimaisId equals a.Id
                                            join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId
                                            where p.Id == faturamento.ProprietarioId &&
                                            p.Situacao == Situacao.ATIVO &&
                                            aa.DiariaSituacao != DiariaSituacao.CANCELADA &&
                                            ap.DataAquisicao < faturamento.DataApuracao &&
                                            ap.DataValidade >= faturamento.DataApuracao &&
                                            aa.DataUltimaApuracao < faturamento.DataApuracao
                                            group aa by aa.Id into agroup
                                            select new AnimaisEntrada
                {
                    Id = agroup.First().Id
                }).ToList();
            }
            else
            {
                listEntradasProprietario = (from p in _context.Proprietarios
                                            join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId
                                            join a in _context.Animais on ap.AnimaisId equals a.Id
                                            join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId
                                            where p.Situacao == Situacao.ATIVO &&
                                            ap.DataAquisicao < faturamento.DataApuracao &&
                                            ap.DataValidade >= faturamento.DataApuracao &&
                                            aa.DiariaSituacao != DiariaSituacao.CANCELADA &&
                                            aa.DataUltimaApuracao < faturamento.DataApuracao
                                            group aa by aa.Id into agroup
                                            select new AnimaisEntrada
                {
                    Id = agroup.First().Id
                }).ToList();
            }
            #endregion


            //Inicia o processo se encontrar lançamentos de diárias para animais que possuem proprietário
            if (listEntradasProprietario.Count > 0)
            {
                foreach (var item in listEntradasProprietario)
                {
                    //Verifica as informações de datas que devem ser cobradas para cada proprietário do animal.
                    var dadosFat = (from ap in _context.AnimaisProprietarios
                                    join a in _context.Animais on ap.AnimaisId equals a.Id
                                    join ae in _context.AnimaisEntradas on a.Id equals ae.AnimaisId
                                    where ae.Id == item.Id &&
                                    Convert.ToDateTime(ap.DataValidade.ToString("MM/yyyy")) > Convert.ToDateTime(referencia)
                                    select ap
                                    ).ToList();


                    List <DadosProprietarioEntrada> objDados = new List <DadosProprietarioEntrada>();
                    foreach (var iFat in dadosFat)
                    {
                        DateTime PrimeiroDiadoMes = DateTime.Parse("01/" + referencia);

                        DadosProprietarioEntrada objDadosProprietario = new DadosProprietarioEntrada();
                        objDadosProprietario.DataAquisicao      = iFat.DataAquisicao;
                        objDadosProprietario.DataUltimaApuracao = (DateTime)iFat.DataUltimaApuracao;
                        objDadosProprietario.ProprietarioId     = (int)iFat.ProprietarioId;

                        if (PrimeiroDiadoMes > iFat.DataUltimaApuracao)
                        {
                            objDadosProprietario.Dias = faturamento.DataApuracao.Value.Subtract(PrimeiroDiadoMes).Days;
                        }
                        else
                        {
                            objDadosProprietario.Dias = faturamento.DataApuracao.Value.Subtract((DateTime)iFat.DataUltimaApuracao).Days;
                        }
                        objDados.Add(objDadosProprietario);
                    }

                    //Processo para definir o fator de divisão para o proprietário.



                    AnimaisEntrada ObjAnimaisEntradas = _context.AnimaisEntradas.FirstOrDefault(s => s.Id == item.Id);


                    //Procura os proprietárioas associados ao animal que estão ativos no periodo de faturamento
                    //Periodo de faturamento igual à data ultimo faturamento ou data de aquisição menos data faturamento

                    List <AnimaisProprietario> LstProprietarioTeste = (from ap in _context.AnimaisProprietarios
                                                                       join a in _context.Animais on ap.AnimaisId equals a.Id
                                                                       where a.Id == ObjAnimaisEntradas.AnimaisId &&
                                                                       Convert.ToDateTime(ap.DataValidade.ToString("MM/yyyy")) > Convert.ToDateTime(referencia)
                                                                       select ap
                                                                       ).ToList();


                    //Verifica se o animal possui proprietário apto para cobrança de acordo com a data de realização do serviço.
                    List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios
                                                           join p in _context.Proprietarios on ap.ProprietarioId equals p.Id
                                                           join a in _context.Animais on ap.AnimaisId equals a.Id
                                                           join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId
                                                           where aa.Id == item.Id &&
                                                           ap.AnimaisId == ObjAnimaisEntradas.AnimaisId &&
                                                           p.Situacao == Situacao.ATIVO &&
                                                           ap.DataAquisicao < faturamento.DataApuracao &&
                                                           ap.DataValidade >= faturamento.DataApuracao
                                                           select p).ToList();

                    int totalProprietario = LstProprietario.Count();

                    if (totalProprietario > 0)
                    {
                        //Quando o animal do serviço realizado possui mais de um proprietário realiza loop para rateio do serviço que será faturado.
                        if (totalProprietario >= 2)
                        {
                            for (int i = 0; i < LstProprietario.Count(); i++)
                            {
                                //Verifica se existe fatura o Proprietário para referência informada
                                FaturaId = RetornaFatura(LstProprietario[i].Id, referencia);

                                FaturamentoEntradas faturamentoEntradas = new FaturamentoEntradas();

                                faturamentoEntradas.ProprietarioId    = LstProprietario[i].Id;
                                faturamentoEntradas.AnimaisEntradasId = ObjAnimaisEntradas.Id;
                                faturamentoEntradas.AnimaisId         = ObjAnimaisEntradas.AnimaisId;
                                faturamentoEntradas.ServicoId         = ObjAnimaisEntradas.ServicoId;

                                decimal diaria = ((Convert.ToDecimal(ObjAnimaisEntradas.Valor) / 100) / totalProprietario);
                                faturamentoEntradas.Diaria = diaria;

                                //Verificar a data de aquisição do animal pelo proprietário


                                //Calcular a quantidade de dias do mes ainda não apurados de acordo com a data de apuração informada.
                                //Dias => data apuração informada - data ultima apuração
                                DateTime?data1     = ObjAnimaisEntradas.DataUltimaApuracao;
                                DateTime?data2     = faturamento.DataApuracao;
                                TimeSpan?totalDias = data2 - data1;
                                int      dias      = totalDias.Value.Days;
                                faturamentoEntradas.Dias = dias;

                                faturamentoEntradas.Valor           = (diaria * dias).ToString();
                                faturamentoEntradas.DataFaturamento = DateTime.Now;
                                faturamentoEntradas.Referencia      = referencia;
                                faturamentoEntradas.FaturamentoId   = FaturaId;

                                //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário.
                                _context.FaturamentoEntradas.Add(faturamentoEntradas);

                                AnimaisProprietario ObjAnimaisProprietarios = (from ap in _context.AnimaisProprietarios
                                                                               where ap.ProprietarioId == LstProprietario[i].Id
                                                                               select ap).FirstOrDefault();
                                ObjAnimaisProprietarios.DataUltimaApuracao = faturamento.DataApuracao;
                                _context.AnimaisProprietarios.Update(ObjAnimaisProprietarios);

                                _context.SaveChanges();
                            }
                        }
                        else if (totalProprietario == 1)
                        {
                            //Verifica se existe fatura o Proprietário para referência informada
                            FaturaId = RetornaFatura(LstProprietario[0].Id, referencia);

                            FaturamentoEntradas faturamentoEntradas = new FaturamentoEntradas();

                            faturamentoEntradas.ProprietarioId    = listEntradasProprietario[0].Id;
                            faturamentoEntradas.AnimaisEntradasId = ObjAnimaisEntradas.Id;
                            faturamentoEntradas.AnimaisId         = ObjAnimaisEntradas.AnimaisId;
                            faturamentoEntradas.ServicoId         = ObjAnimaisEntradas.ServicoId;
                            decimal diaria = (Convert.ToDecimal(ObjAnimaisEntradas.Valor) / 100);
                            faturamentoEntradas.Diaria = diaria;

                            //Calcular a quantidade de dias do mes ainda não apurados de acordo com a data de apuração informada.
                            //Dias => data apuração informada - data ultima apuração
                            DateTime?data1     = ObjAnimaisEntradas.DataUltimaApuracao;
                            DateTime?data2     = faturamento.DataApuracao;
                            TimeSpan?totalDias = data2 - data1;
                            int      dias      = totalDias.Value.Days;
                            faturamentoEntradas.Dias = dias;

                            faturamentoEntradas.Valor           = (diaria * dias).ToString();
                            faturamentoEntradas.DataFaturamento = DateTime.Now;
                            faturamentoEntradas.Referencia      = referencia;
                            faturamentoEntradas.FaturamentoId   = FaturaId;

                            //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário.
                            _context.FaturamentoEntradas.Add(faturamentoEntradas);
                            AnimaisProprietario ObjAnimaisProprietarios = (from ap in _context.AnimaisProprietarios
                                                                           where ap.ProprietarioId == LstProprietario[0].Id
                                                                           select ap).FirstOrDefault();
                            ObjAnimaisProprietarios.DataUltimaApuracao = faturamento.DataApuracao;
                            _context.AnimaisProprietarios.Update(ObjAnimaisProprietarios);
                            _context.SaveChanges();
                        }

                        //Atualiza o serviço realizado no animal para item incluído no processo de faturamento.
                        ObjAnimaisEntradas.DataUltimaApuracao = faturamento.DataApuracao;

                        _context.AnimaisEntradas.Update(ObjAnimaisEntradas);
                        _context.SaveChanges();
                    }
                }
            }

            //Atualiza o faturamento apenas se existerem registros de entradas ou serviços
            if (listServicoProprietario.Count > 0 || listEntradasProprietario.Count > 0)
            {
                AtualizaFaturamento(FaturaId);
            }

            return(RedirectToAction("Index"));
        }
Beispiel #5
0
        public void FaturaProprietario(int idAnimalServico)
        {
            List <AnimaisServicos> listServicoProprietario = (from p in _context.Proprietarios
                                                              join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId
                                                              join a in _context.Animais on ap.AnimaisId equals a.Id
                                                              join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId
                                                              select
                                                              (
                                                                  aass
                                                              )).ToList();

            foreach (var item in listServicoProprietario)
            {
                AnimaisServicos ObjAnimaisServicos = _context.AnimaisServicos.FirstOrDefault(s => s.Id == item.Id);

                //Verifica se o animal precisa ter proprietário
                List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios
                                                       join p in _context.Proprietarios on ap.ProprietarioId equals p.Id
                                                       join a in _context.Animais on ap.AnimaisId equals a.Id
                                                       where ap.AnimaisId == ObjAnimaisServicos.AnimaisId &&
                                                       p.Situacao == Situacao.ATIVO &&
                                                       ap.DataAquisicao <= ObjAnimaisServicos.Data &&
                                                       ap.DataDesassociacao >= ObjAnimaisServicos.Data
                                                       select p).ToList();

                int totalProprietario = LstProprietario.Count();

                //Realiza o loop de proprietários e realiza o rateio.
                if (totalProprietario >= 2)
                {
                    LstProprietario.Count();

                    for (int i = 0; i < LstProprietario.Count(); i++)
                    {
                        FaturamentoServicos faturamentoServicos = new FaturamentoServicos();

                        faturamentoServicos.ProprietarioId    = LstProprietario[i].Id;
                        faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id;
                        faturamentoServicos.AnimaisId         = ObjAnimaisServicos.AnimaisId;
                        faturamentoServicos.ServicoId         = ObjAnimaisServicos.ServicoId;

                        decimal valor = ((Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100) / totalProprietario);
                        faturamentoServicos.Valor = Decimal.Round(valor, 2).ToString();

                        faturamentoServicos.DataFaturamento = DateTime.Now;
                        //faturamentoServicos.Referencia = DateTime.Now;

                        _context.FaturamentoServicos.Add(faturamentoServicos);
                        _context.SaveChanges();
                    }
                }
                else
                {
                    FaturamentoServicos faturamentoServicos = new FaturamentoServicos();

                    faturamentoServicos.ProprietarioId    = LstProprietario[0].Id;
                    faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id;
                    faturamentoServicos.AnimaisId         = ObjAnimaisServicos.AnimaisId;
                    faturamentoServicos.ServicoId         = ObjAnimaisServicos.ServicoId;
                    faturamentoServicos.Valor             = (Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100).ToString();
                    faturamentoServicos.DataFaturamento   = DateTime.Now;
                    //faturamentoServicos.Referencia = DateTime.Now;

                    _context.FaturamentoServicos.Add(faturamentoServicos);
                    _context.SaveChanges();
                }
            }
        }
Beispiel #6
0
        public IActionResult AddServico(int idAnimais)
        {
            //https://www.talkingdotnet.com/handle-ajax-requests-in-asp-net-core-razor-pages/
            //http://binaryintellect.net/articles/16ecfe49-98df-4305-b53f-2438d836f0d0.aspx

            string retorno = null;

            {
                MemoryStream stream = new MemoryStream();
                Request.Body.CopyTo(stream);
                stream.Position = 0;
                using (StreamReader reader = new StreamReader(stream))
                {
                    string requestBody = reader.ReadToEnd();
                    if (requestBody.Length > 0)
                    {
                        //var obj = JsonConvert.DeserializeObject<AnimaisServicos>(requestBody);

                        AnimaisServicos ObjAnimaisServicos = JsonConvert.DeserializeObject <AnimaisServicos>(requestBody);

                        //Se animal for Doadora ou Garanhão
                        var inClause = new List <string> {
                            "1", "2"
                        };
                        int regra = _context.Animais
                                    .Where(a => inClause.Contains(a.AnimalTipo.ToString())
                                           &&
                                    //.Where(a =>
                                           a.Id == ObjAnimaisServicos.AnimaisId)
                                    //.Select(a => a.Id)
                                    .Count();
                        // O animal é garanhão ou doadora e deve ter pelo menos um proprietário ativo e vigente.
                        if (regra >= 1)
                        {
                            //Verifica se o animal precisa ter proprietário
                            int total = (from ap in _context.AnimaisProprietarios
                                         join p in _context.Proprietarios on ap.ProprietarioId equals p.Id
                                         join a in _context.Animais on ap.AnimaisId equals a.Id
                                         where ap.AnimaisId == ObjAnimaisServicos.AnimaisId &&
                                         p.Situacao == Situacao.ATIVO &&
                                         ap.DataAquisicao <= ObjAnimaisServicos.Data &&
                                         ap.DataValidade >= ObjAnimaisServicos.Data    //desassociação e validade devem ser iguais
                                         select p.Id).Count();
                            //Se possui proprietário ativo ou vigente
                            if (total >= 1)
                            {
                                //Loop de Proprietarios com rateio


                                _context.AnimaisServicos.Add(ObjAnimaisServicos);
                                _context.SaveChanges();
                                retorno = "NOVO";
                            }
                            else
                            {
                                retorno = "SEMPROPRIETARIO";
                            }
                        }
                        else
                        {//Animal não é do tipo Doadora ou garanhão
                            _context.AnimaisServicos.Add(ObjAnimaisServicos);
                            _context.SaveChanges();
                            retorno = "NOVO";
                        }


                        //string valor = ObjAnimaisServicos.Valor.ToString().Replace(",", ".");
                        //https://pt.stackoverflow.com/questions/243124/como-limitar-casas-decimais-usando-c
                        //ObjAnimaisServicos.Valor = Convert.ToDecimal(ObjAnimaisServicos.Valor, new CultureInfo("pt-BR"));


                        return(new JsonResult(retorno));
                    }
                }
            }

            return(new JsonResult(retorno));
        }