Exemplo n.º 1
0
        public CFOCVM(EmissaoCFOC entidade, List <Estado> lstEstados, List <Municipio> lstMunicipios, List <Lista> lstEmpreendimentos,
                      List <Lista> lstPragas, List <Lista> lstProdutosEspecificacoes, List <Lista> lstSituacoes, List <Municipio> lstMunicipiosEmissao)
        {
            CFOC = entidade ?? new EmissaoCFOC();

            if (CFOC.Id <= 0)
            {
                if (lstEmpreendimentos != null && lstEmpreendimentos.Count == 1)
                {
                    CFOC.EmpreendimentoId = Convert.ToInt32(lstEmpreendimentos.First().Id);
                }
            }

            Empreendimentos        = ViewModelHelper.CriarSelectList(lstEmpreendimentos, false, true, entidade.EmpreendimentoId.ToString());
            Situacoes              = ViewModelHelper.CriarSelectList(lstSituacoes, false, true, entidade.SituacaoId.ToString());
            ProdutosEspecificacoes = lstProdutosEspecificacoes;
            Pragas            = ViewModelHelper.CriarSelectList(lstPragas);
            Estados           = ViewModelHelper.CriarSelectList(lstEstados);
            Municipios        = ViewModelHelper.CriarSelectList(lstMunicipios);
            EstadosEmissao    = ViewModelHelper.CriarSelectList(lstEstados, selecionado: CFOC.EstadoEmissaoId.ToString());
            MunicipiosEmissao = ViewModelHelper.CriarSelectList(lstMunicipiosEmissao, selecionado: CFOC.MunicipioEmissaoId.ToString());

            if (CFOC.EstadoId > 0)
            {
                Estados.Single(x => x.Value == CFOC.EstadoId.ToString()).Selected = true;
            }

            if (CFOC.MunicipioId > 0)
            {
                Municipios.Single(x => x.Value == CFOC.MunicipioId.ToString()).Selected = true;
            }
        }
Exemplo n.º 2
0
        public bool Cancelar(EmissaoCFOC entidade)
        {
            GerenciadorTransacao.ObterIDAtual();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();

                EmissaoCFOC entidadeBanco = _da.ObterPorNumero(Convert.ToInt64(entidade.Numero), false, false, bancoDeDados);
                List <int>  lotesID       = entidadeBanco.Produtos.Select(x => x.LoteId).ToList();

                //Dessassocio os Lotes
                entidadeBanco.Produtos.Clear();
                _da.Salvar(entidadeBanco, bancoDeDados);

                LoteBus loteBus = new LoteBus();
                foreach (var item in lotesID)
                {
                    loteBus.AlterarSituacaoLote(item, eLoteSituacao.NaoUtilizado, bancoDeDados);
                }

                _da.Cancelar(entidadeBanco, bancoDeDados);

                if (!Validacao.EhValido)
                {
                    bancoDeDados.Rollback();
                    return(false);
                }

                bancoDeDados.Commit();
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 3
0
        public ActionResult Ativar(EmissaoCFOC entidade)
        {
            _bus.Ativar(entidade);

            string UrlRedirecionar = Url.Action("Index", "CFOC") + "?Msg=" + Validacao.QueryParam() + "&acaoGerarPdfId=" + entidade.Id.ToString();

            return(Json(new { EhValido = Validacao.EhValido, Msg = Validacao.Erros, @UrlRedirecionar = UrlRedirecionar, @Id = entidade.Id }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 4
0
        public ActionResult AtivarConfirm(int id)
        {
            EmissaoCFOC entidade = _bus.Obter(id, simplificado: true);

            entidade.DataAtivacao.Data = DateTime.Today;

            return(PartialView("AtivarPartial", entidade));
        }
Exemplo n.º 5
0
        public ActionResult Editar(EmissaoCFOC entidade)
        {
            _bus.Salvar(entidade);

            string UrlRedirecionar = Url.Action("Index", "CFOC") + "?Msg=" + Validacao.QueryParam() + "&acaoId=" + entidade.Id.ToString();

            return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros, @UrlRedirecionar = UrlRedirecionar }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        public ListarVM(List <QuantPaginacao> quantPaginacao, List <Lista> situacoes)
        {
            Paginacao  = new Paginacao();
            Resultados = new List <EmissaoCFOC>();
            Filtros    = new EmissaoCFOC();

            SituacaoLista = ViewModelHelper.CriarSelectList(situacoes.Where(x => Convert.ToInt32(x.Id) != (int)eDocumentoFitossanitarioSituacao.EmElaboracao).ToList(), true, true);
            Paginacao.ListaQuantPaginacao = ViewModelHelper.CriarSelectList(quantPaginacao, false, false);
        }
Exemplo n.º 7
0
        public bool Editar(EmissaoCFOC entidade)
        {
            if (entidade.SituacaoId != (int)eDocumentoFitossanitarioSituacao.EmElaboracao)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.EditarSituacaoInvalida);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 8
0
        public ListarVM(List <QuantPaginacao> quantPaginacao, List <Lista> situacoes)
        {
            Paginacao  = new Paginacao();
            Resultados = new List <EmissaoCFOC>();
            Filtros    = new EmissaoCFOC();

            SituacaoLista = ViewModelHelper.CriarSelectList(situacoes, true, true);
            Paginacao.ListaQuantPaginacao = ViewModelHelper.CriarSelectList(quantPaginacao, false, false);
        }
Exemplo n.º 9
0
        public ActionResult Visualizar(int id)
        {
            EmissaoCFOC entidade = _bus.Obter(id);

            CFOCVM vm = new CFOCVM(entidade, ListaCredenciadoBus.Estados, ListaCredenciadoBus.Municipios(entidade.EstadoId), _bus.ObterEmpreendimentosLista(),
                                   new List <Lista>(), ListaCredenciadoBus.CFOCLoteEspecificacao, ListaCredenciadoBus.DocFitossanitarioSituacao, ListaCredenciadoBus.Municipios(entidade.EstadoEmissaoId));

            vm.IsVisualizar = true;
            return(View(vm));
        }
Exemplo n.º 10
0
        public ActionResult Editar(EmissaoCFOC entidade)
        {
            entidade.PossuiLaudoLaboratorial           = false;
            entidade.PossuiTratamentoFinsQuarentenario = false;
            _bus.Salvar(entidade);

            string UrlRedirecionar = Url.Action("Index", "CFOC") + "?Msg=" + Validacao.QueryParam() + "&acaoId=" + entidade.Id.ToString();

            return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros, @UrlRedirecionar = UrlRedirecionar }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 11
0
        internal bool Excluir(int id)
        {
            EmissaoCFOC entidade = _da.Obter(id, true);

            if (entidade.SituacaoId != (int)eDocumentoFitossanitarioSituacao.EmElaboracao)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ExcluirSituacaoInvalida);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 12
0
        public decimal ObterSaldoDocOrigem(PTVProduto prod)
        {
            decimal saldo = 0;

            switch ((eDocumentoFitossanitarioTipo)prod.OrigemTipo)
            {
            case eDocumentoFitossanitarioTipo.CFO:
                EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                EmissaoCFO    cfo           = emissaoCFOBus.Obter(prod.Origem);
                saldo = cfo.Produtos.Where(x => x.CultivarId == prod.Cultivar && x.UnidadeMedidaId == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.CFOC:
                EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus();
                EmissaoCFOC    cfoc           = emissaoCFOCBus.Obter(prod.Origem);
                saldo = cfoc.Produtos.Where(x => x.CultivarId == prod.Cultivar && x.UnidadeMedidaId == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.PTVOutroEstado:
                PTVOutroBus ptvOutroBus = new PTVOutroBus();
                PTVOutro    ptvOutro    = ptvOutroBus.Obter(prod.Origem);
                saldo = ptvOutro.Produtos.Where(x => x.Cultivar == prod.Cultivar && x.UnidadeMedida == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.PTV:
                PTVBus ptvBus = new PTVBus();
                PTV    ptv    = ptvBus.Obter(prod.Origem);
                saldo = ptv.Produtos.Where(x => x.Cultivar == prod.Cultivar && x.UnidadeMedida == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;
            }

            decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)prod.OrigemTipo, prod.Origem, prod.OrigemNumero, prod.Cultivar, prod.UnidadeMedida, 0);                    //o último parâmetro, idPTV, nesse caso não importa, porque o PTV atual não deve ser desconsiderado do cálculo

            saldo = saldo - saldoOutrosDoc;

            //if (prod.OrigemTipo != (int)eDocumentoFitossanitarioTipo.CFCFR && prod.OrigemTipo != (int)eDocumentoFitossanitarioTipo.TF && prod.OrigemTipo != (int)eDocumentoFitossanitarioTipo.SemDocOrigem)
            //{
            //	decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)prod.OrigemTipo, prod.Origem, prod.OrigemNumero, prod.Cultivar, prod.UnidadeMedida, ptvData.Data.GetValueOrDefault().Year, ptvID);

            //	decimal quantidadeAdicionada = lista.Where(x => x.OrigemTipo == prod.OrigemTipo && x.Origem == prod.Origem && x.Cultivar == prod.Cultivar && x.UnidadeMedida == prod.UnidadeMedida && !x.Equals(prod)).Sum(x => x.Quantidade);

            //	if ((saldoOutrosDoc + quantidadeAdicionada + (prod.ExibeQtdKg ? prod.Quantidade / 1000 : prod.Quantidade)) > saldo)
            //	{
            //		Validacao.Add(Mensagem.PTV.SomaQuantidadeInvalida);
            //	}
            //}

            return(saldo);
        }
Exemplo n.º 13
0
        public ActionResult GerarPdf(int id)
        {
            try
            {
                EmissaoCFOC entidade = _bus.Obter(id, simplificado: true);

                PdfCFOC pdf = new PdfCFOC();
                return(ViewModelHelper.GerarArquivoPdf(pdf.Gerar(id, entidade.CredenciadoId), "CFOC"));
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
                return(RedirectToAction("Index", "CFOC", Validacao.QueryParamSerializer()));
            }
        }
Exemplo n.º 14
0
        public bool Cancelar(EmissaoCFOC entidade)
        {
            GerenciadorTransacao.ObterIDAtual();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();

                EmissaoCFOC entidadeBanco = _da.ObterPorNumero(Convert.ToInt64(entidade.Numero), entidade.Serie, false, false, bancoDeDados);

                if (!String.IsNullOrWhiteSpace(entidadeBanco.Numero))
                {
                    string numtemp = entidadeBanco.Numero;
                    if (numtemp.Count() > 8)
                    {
                        entidadeBanco.Numero = numtemp.Substring(0, 8);
                        entidadeBanco.Serie  = numtemp[9].ToString();
                    }

                    if (entidade.Id != 0)
                    {
                        List <int> lotesID = entidadeBanco.Produtos.Select(x => x.LoteId).ToList();

                        //Dessassocio os Lotes
                        entidadeBanco.Produtos.Clear();
                        _da.Salvar(entidadeBanco, bancoDeDados);

                        LoteBus loteBus = new LoteBus();
                        foreach (var item in lotesID)
                        {
                            loteBus.AlterarSituacaoLote(item, eLoteSituacao.NaoUtilizado, bancoDeDados);
                        }
                    }

                    _da.Cancelar(entidadeBanco, bancoDeDados);
                }

                if (!Validacao.EhValido)
                {
                    bancoDeDados.Rollback();
                    return(false);
                }

                bancoDeDados.Commit();
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 15
0
        public ActionResult Criar()
        {
            if (!_validar.VerificarCredenciadoHabilitado())
            {
                return(RedirectToAction("Index", "CFOC", Validacao.QueryParamSerializer()));
            }

            EmissaoCFOC entidade = new EmissaoCFOC();

            entidade.SituacaoId            = (int)eDocumentoFitossanitarioSituacao.EmElaboracao;
            entidade.DataEmissao.DataTexto = DateTime.Today.ToShortDateString();
            entidade.EstadoEmissaoId       = ViewModelHelper.EstadoDefaultId();

            CFOCVM vm = new CFOCVM(entidade, ListaCredenciadoBus.Estados, new List <Municipio>(), _bus.ObterEmpreendimentosLista(),
                                   new List <Lista>(), ListaCredenciadoBus.CFOCLoteEspecificacao, ListaCredenciadoBus.DocFitossanitarioSituacao, ListaCredenciadoBus.Municipios(entidade.EstadoEmissaoId));

            return(View(vm));
        }
Exemplo n.º 16
0
        internal bool Ativar(EmissaoCFOC entidade)
        {
            ValidacoesGenericasBus.DataMensagem(entidade.DataAtivacao, "DataAtivacao", "ativação");

            if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Digital && entidade.DataAtivacao.DataTexto != DateTime.Today.ToShortDateString())
            {
                Validacao.Add(Mensagem.Padrao.DataIgualAtual("DataAtivacao", "ativação"));
            }

            if (entidade.SituacaoId != (int)eDocumentoFitossanitarioSituacao.EmElaboracao)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.AtivarSituacaoInvalida);
            }

            Salvar(entidade);

            return(Validacao.EhValido);
        }
Exemplo n.º 17
0
        public bool Ativar(EmissaoCFOC entidade)
        {
            try
            {
                EmissaoCFOC entidadeBanco = Obter(entidade.Id);
                entidadeBanco.DataAtivacao = entidade.DataAtivacao;

                if (!_validar.Ativar(entidadeBanco))
                {
                    return(false);
                }

                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                {
                    bancoDeDados.IniciarTransacao();

                    //LoteBus loteBus = new LoteBus();
                    //foreach (var item in entidadeBanco.Produtos)
                    //{
                    //    loteBus.AlterarSituacaoLote(item.LoteId, eLoteSituacao.Utilizado, bancoDeDados);
                    //}

                    _da.Ativar(entidadeBanco, bancoDeDados);

                    if (!Validacao.EhValido)
                    {
                        bancoDeDados.Rollback();
                        return(false);
                    }

                    Validacao.Add(Mensagem.EmissaoCFOC.AtivadoSucesso(entidade.Numero));

                    bancoDeDados.Commit();
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 18
0
        public Resultados <EmissaoCFOC> Filtrar(EmissaoCFOC filtrosListar, Paginacao paginacao)
        {
            try
            {
                Filtro <EmissaoCFOC>     filtro     = new Filtro <EmissaoCFOC>(filtrosListar, paginacao);
                Resultados <EmissaoCFOC> resultados = _da.Filtrar(filtro);

                if (resultados.Quantidade < 1)
                {
                    Validacao.Add(Mensagem.Padrao.NaoEncontrouRegistros);
                }

                return(resultados);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(null);
        }
Exemplo n.º 19
0
        public decimal ObterSaldoDocOrigem(PTVProduto prod)
        {
            decimal saldo = 0;

            switch ((eDocumentoFitossanitarioTipo)prod.OrigemTipo)
            {
            case eDocumentoFitossanitarioTipo.CFO:
                EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                EmissaoCFO    cfo           = emissaoCFOBus.Obter(prod.Origem);
                saldo = cfo.Produtos.Where(x => x.CultivarId == prod.Cultivar && x.UnidadeMedidaId == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.CFOC:
                EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus();
                EmissaoCFOC    cfoc           = emissaoCFOCBus.Obter(prod.Origem);
                saldo = cfoc.Produtos.Where(x => x.CultivarId == prod.Cultivar && x.UnidadeMedidaId == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.PTVOutroEstado:
                PTVOutroBus ptvOutroBus = new PTVOutroBus();
                PTVOutro    ptvOutro    = ptvOutroBus.Obter(prod.Origem);
                saldo = ptvOutro.Produtos.Where(x => x.Cultivar == prod.Cultivar && x.UnidadeMedida == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;

            case eDocumentoFitossanitarioTipo.PTV:
                PTVInternoBus ptvBus = new PTVInternoBus();
                PTV           ptv    = ptvBus.Obter(prod.Origem);
                saldo = ptv.Produtos.Where(x => x.Cultivar == prod.Cultivar && x.UnidadeMedida == prod.UnidadeMedida).Sum(x => x.Quantidade);
                break;
            }

            decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)prod.OrigemTipo, prod.Origem, prod.OrigemNumero, prod.Cultivar, prod.UnidadeMedida, 0);                //o último parâmetro, idPTV, nesse caso não importa, porque o PTV atual não deve ser desconsiderado do cálculo

            saldo = saldo - saldoOutrosDoc;

            return(saldo);
        }
Exemplo n.º 20
0
        public ActionResult Editar(int id)
        {
            if (!_validar.VerificarCredenciadoHabilitado())
            {
                return(RedirectToAction("Index", "CFOC", Validacao.QueryParamSerializer()));
            }

            EmissaoCFOC entidade = _bus.Obter(id);

            if (!_validar.Editar(entidade))
            {
                return(RedirectToAction("Index", "CFOC", Validacao.QueryParamSerializer()));
            }

            List <int> culturas = new List <int>();

            entidade.Produtos.Select(x => x.CulturaId).ToList().ForEach(cultura =>
            {
                culturas.Add(cultura);
            });

            CFOCVM vm = new CFOCVM(entidade, ListaCredenciadoBus.Estados, ListaCredenciadoBus.Municipios(entidade.EstadoId), _bus.ObterEmpreendimentosLista(),
                                   _bus.ObterPragasLista(entidade.Produtos), ListaCredenciadoBus.CFOCLoteEspecificacao, ListaCredenciadoBus.DocFitossanitarioSituacao, ListaCredenciadoBus.Municipios(entidade.EstadoEmissaoId));

            CulturaInternoBus culturaBus            = new CulturaInternoBus();
            List <Cultivar>   cultivares            = culturaBus.ObterCultivares(entidade.Produtos.Select(x => x.CulturaId).ToList()) ?? new List <Cultivar>();
            List <string>     declaracoesAdicionais = cultivares
                                                      .Where(x => entidade.Produtos.Select(y => y.CultivarId).ToList().Any(y => y == x.Id))
                                                      .SelectMany(x => x.LsCultivarConfiguracao.Where(y => entidade.Produtos.Count(z => z.CultivarId == y.Cultivar && y.TipoProducaoId == (int)ValidacoesGenericasBus.ObterTipoProducao(z.UnidadeMedidaId)) > 0))
                                                      .Where(x => entidade.Pragas.Any(y => y.Id == x.PragaId))
                                                      .Select(x => x.DeclaracaoAdicionalTextoHtml)
                                                      .Distinct().ToList();

            vm.CFOC.DeclaracaoAdicionalHtml = String.Join(" ", declaracoesAdicionais);

            return(View(vm));
        }
Exemplo n.º 21
0
        public bool Salvar(EmissaoCFOC entidade)
        {
            try
            {
                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Digital)
                {
                    if (entidade.Id <= 0)
                    {
                        if (_validar.VerificarNumeroDigitalDisponivel())
                        {
                            entidade.Numero = ObterNumeroDigital();

                            if (entidade.Numero.IndexOf("/") >= 0)
                            {
                                string[] tmpNum = entidade.Numero.Split('/');
                                entidade.Numero = tmpNum[0];
                                entidade.Serie  = tmpNum[1];
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        EmissaoCFOC entidadeBanco = Obter(entidade.Id, simplificado: true);
                        entidade.Numero = entidadeBanco.Numero;

                        if (entidade.Numero.IndexOf("/") >= 0)
                        {
                            string[] tmpNum = entidade.Numero.Split('/');
                            entidade.Numero = tmpNum[0];
                            entidade.Serie  = tmpNum[1];
                        }
                    }
                }

                CulturaInternoBus culturaBus = new CulturaInternoBus();


                List <Cultivar> cultivares = culturaBus.ObterCultivares(entidade.Produtos.Select(x => x.CulturaId).ToList(), entidade.Produtos.Select(y => y.LoteId).ToList()) ?? new List <Cultivar>();

                var declaracoesAdicionais = cultivares
                                            .Where(x => entidade.Produtos.Select(y => y.CultivarId).ToList().Any(y => y == x.Id))
                                            .SelectMany(x => x.LsCultivarConfiguracao.Where(y => entidade.Produtos.Count(z => z.CultivarId == y.Cultivar && y.TipoProducaoId == (int)ValidacoesGenericasBus.ObterTipoProducao(z.UnidadeMedidaId)) > 0))
                                            .Where(x => entidade.Pragas.Any(y => y.Id == x.PragaId))
                                            .Select(x => x.DeclaracaoAdicionalTexto)
                                            .Distinct().ToList();

                var declaracoesAdicionaisHtml = cultivares
                                                .Where(x => entidade.Produtos.Select(y => y.CultivarId).ToList().Any(y => y == x.Id))
                                                .SelectMany(x => x.LsCultivarConfiguracao.Where(y => entidade.Produtos.Count(z => z.CultivarId == y.Cultivar && y.TipoProducaoId == (int)ValidacoesGenericasBus.ObterTipoProducao(z.UnidadeMedidaId)) > 0))
                                                .Where(x => entidade.Pragas.Any(y => y.Id == x.PragaId))
                                                .Select(x => x.DeclaracaoAdicionalTextoHtml)
                                                .Distinct().ToList();

                entidade.DeclaracaoAdicional     = String.Join(" ", declaracoesAdicionais);
                entidade.DeclaracaoAdicionalHtml = String.Join(" ", declaracoesAdicionaisHtml);

                _validar.Salvar(entidade);

                if (!Validacao.EhValido)
                {
                    return(false);
                }

                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                {
                    bancoDeDados.IniciarTransacao();

                    _da.Salvar(entidade, bancoDeDados);

                    CFOCFOCInternoBus CFOCFOCInternoBus = new CFOCFOCInternoBus();
                    CFOCFOCInternoBus.SetarNumeroUtilizado(entidade.Numero, entidade.TipoNumero.GetValueOrDefault(), eDocumentoFitossanitarioTipo.CFOC, entidade.Serie);

                    if (string.IsNullOrEmpty(entidade.Serie))
                    {
                        Validacao.Add(Mensagem.EmissaoCFOC.Salvar(entidade.Numero));
                    }
                    else
                    {
                        Validacao.Add(Mensagem.EmissaoCFOC.Salvar(entidade.Numero + "/" + entidade.Serie));
                    }

                    bancoDeDados.Commit();
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 22
0
        public bool ValidarAssociarResponsavelTecnicoHabilitado(EmissaoCFOC entidade)
        {
            #region Configurar

            List <Cultivar> cultivares = new List <Cultivar>();
            foreach (var item in entidade.Produtos)
            {
                cultivares.Add(new Cultivar()
                {
                    CulturaId = item.CulturaId, Id = item.CultivarId
                });
            }

            if (cultivares.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoObrigatorio);
                return(false);
            }

            HabilitarEmissaoCFOCFOCBus habilitarEmissaoCFOCFOCBus = new HabilitarEmissaoCFOCFOCBus();
            HabilitarEmissaoCFOCFOC    habilitacao = new HabilitarEmissaoCFOCFOCBus().ObterPorCredenciado(User.FuncionarioId);
            if (Validacao.EhValido)
            {
                PragaInternoBus pragaBus = new PragaInternoBus();
                habilitacao.Pragas.ForEach(x =>
                {
                    x.Praga.Culturas = pragaBus.ObterCulturas(x.Praga.Id);
                });
            }
            else
            {
                return(false);
            }

            #endregion

            if (habilitacao.Id <= 0 || habilitacao.Situacao == (int)eHabilitacaoCFOCFOCSituacao.Inativo)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoNaoHabilitado);
                return(false);
            }

            if (!habilitacao.Pragas.SelectMany(p => p.Praga.Culturas).ToList().Exists(c => cultivares.Exists(x => x.CulturaId == c.Id)))
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoNaoHabilitadoParaCultura);
                return(false);
            }

            if (DateTime.Parse(habilitacao.ValidadeRegistro) < DateTime.Today)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeRegistroMenorAtual);
                return(false);
            }

            foreach (var item in entidade.Pragas)
            {
                if (!habilitacao.Pragas.Exists(y => y.Praga.Id == item.Id))
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.PragaNaoAssociadaHabilitacao(item.NomeCientifico, item.NomeComum));
                    return(false);
                }
            }

            List <string> aux = new List <string>();
            foreach (var habPraga in habilitacao.Pragas)
            {
                foreach (var cultivarItem in habPraga.Praga.Culturas.SelectMany(x => x.LstCultivar))
                {
                    foreach (var item in cultivares)
                    {
                        if (cultivarItem.Id == item.Id && DateTime.Parse(habPraga.DataFinalHabilitacao) < DateTime.Today)
                        {
                            if (!aux.Any(a => a == cultivarItem.Nome))
                            {
                                aux.Add(cultivarItem.Nome);
                            }
                        }
                    }
                }
            }

            if (aux.Count > 0)
            {
                if ((eDocumentoFitossanitarioTipoNumero)entidade.TipoNumero == eDocumentoFitossanitarioTipoNumero.Bloco)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoHabilitacaoPragaVencidaBloco(Mensagem.Concatenar(aux)));
                }
                else
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoHabilitacaoPragaVencidaDigital(Mensagem.Concatenar(aux)));
                }
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 23
0
        internal bool Salvar(EmissaoCFOC entidade)
        {
            //Valida a habilitacao antes do salvar o credenciado.

            if (!entidade.TipoNumero.HasValue)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.TipoNumeroObrigatorio);
            }
            else
            {
                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Bloco)
                {
                    if (!ValidarNumeroBloco(entidade.Numero, entidade.Id))
                    {
                        return(false);
                    }

                    ValidacoesGenericasBus.DataMensagem(entidade.DataEmissao, "CFOC_DataEmissao", "emissão");
                }

                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Digital)
                {
                    //VerificarNumeroDigitalDisponivel foi validado na BUS
                    if (!_da.NumeroCancelado(entidade.Numero))
                    {
                        Validacao.Add(Mensagem.EmissaoCFO.NumeroCancelado);
                        return(false);
                    }
                }
            }

            if (entidade.EmpreendimentoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.EmpreendimentoObrigatorio);
            }
            else
            {
                ResponsavelTecnico responsavel = _da.ObterResponsavelUC(entidade.EmpreendimentoId);
                if (responsavel.Id <= 0)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelDessassociadoUC);
                }
                else
                {
                    if (!string.IsNullOrEmpty(responsavel.DataValidadeART) && DateTime.Parse(responsavel.DataValidadeART) < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.EmissaoCFOC.DataValidadeARTMenorAtual);
                    }
                }
            }

            if (entidade.Produtos.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoObrigatorio);
            }
            else
            {
                if (entidade.Produtos.Count > 5)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.LimiteMaximo);
                }
                else
                {
                    entidade.Produtos.ForEach(produto =>
                    {
                        ValidarProduto(entidade.Id, entidade.EmpreendimentoId, produto);
                    });
                }
            }

            if (entidade.Pragas.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.PragaAssociadaCulturaObrigatorio);
            }
            else
            {
                entidade.Pragas.ForEach(praga =>
                {
                    ValidarPraga(praga);
                });
            }

            if (entidade.ProdutoEspecificacao <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoEspecificacaoObrigatorio);
            }

            if (entidade.PartidaLacradaOrigem && string.IsNullOrEmpty(entidade.NumeroLacre) && string.IsNullOrEmpty(entidade.NumeroPorao) && string.IsNullOrEmpty(entidade.NumeroContainer))
            {
                Validacao.Add(Mensagem.EmissaoCFOC.LacrePoraoConteinerObrigatorio);
            }

            if (entidade.ValidadeCertificado <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeCertificadoObrigatorio);
            }
            else if (entidade.ValidadeCertificado > 30)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeCertificadoMaxima);
            }

            if (entidade.MunicipioEmissaoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.MunicipioEmissaoObrigatorio);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 24
0
        public List <IdentificacaoProduto> OrigemNumero(string numero, int origemTipo, string serieNumeral, out int origemID)
        {
            if (origemTipo == 0)
            {
                Validacao.Add(Mensagem.Lote.OrigemObrigatorio);
            }

            if (string.IsNullOrEmpty(numero) && !IsEditar)
            {
                Validacao.Add(Mensagem.Lote.OrigemNumeroObrigatorio(string.Empty));
            }
            else
            {
                switch ((eDocumentoFitossanitarioTipo)origemTipo)
                {
                case eDocumentoFitossanitarioTipo.CFO:
                    EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                    EmissaoCFO    CFO           = emissaoCFOBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false, serieNumero: serieNumeral);

                    if (CFO.Id > 0)
                    {
                        origemID = CFO.Id;
                        return(CFO.Produtos);
                    }

                    Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente(eDocumentoFitossanitarioTipo.CFO.ToString()));
                    break;

                case eDocumentoFitossanitarioTipo.CFOC:
                    EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus();
                    EmissaoCFOC    CFOC           = emissaoCFOCBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false, serieNumero: serieNumeral);

                    if (CFOC.Id > 0)
                    {
                        origemID = CFOC.Id;
                        return(CFOC.Produtos);
                    }

                    Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente(eDocumentoFitossanitarioTipo.CFOC.ToString()));
                    break;

                case eDocumentoFitossanitarioTipo.PTVOutroEstado:

                    PTVOutroBus ptvOutroBus = new PTVOutroBus();
                    PTVOutro    ptvOutro    = ptvOutroBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false);

                    if (ptvOutro.Id > 0)
                    {
                        origemID = ptvOutro.Id;

                        List <IdentificacaoProduto> lista = new List <IdentificacaoProduto>();
                        foreach (var item in ptvOutro.Produtos)
                        {
                            IdentificacaoProduto itemLista = new IdentificacaoProduto();
                            itemLista.CulturaId       = item.Cultura;
                            itemLista.CulturaTexto    = item.CulturaTexto;
                            itemLista.CultivarId      = item.Cultivar;
                            itemLista.CultivarTexto   = item.CultivarTexto;
                            itemLista.UnidadeMedidaId = item.UnidadeMedida;
                            itemLista.Quantidade      = item.Quantidade;
                            lista.Add(itemLista);
                        }

                        return(lista);
                    }

                    Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente("PTV de outro estado"));

                    break;

                case eDocumentoFitossanitarioTipo.PTV:

                    PTVInternoBus ptvBus = new PTVInternoBus();
                    PTV           ptv    = ptvBus.ObterPorNumero(Convert.ToInt64(numero));

                    if (ptv.Id > 0)
                    {
                        origemID = ptv.Id;

                        List <IdentificacaoProduto> lista = new List <IdentificacaoProduto>();
                        foreach (var item in ptv.Produtos)
                        {
                            IdentificacaoProduto itemLista = new IdentificacaoProduto();
                            itemLista.CulturaId       = item.Cultura;
                            itemLista.CulturaTexto    = item.CulturaTexto;
                            itemLista.CultivarId      = item.Cultivar;
                            itemLista.CultivarTexto   = item.CultivarTexto;
                            itemLista.UnidadeMedidaId = item.UnidadeMedida;
                            itemLista.Quantidade      = item.Quantidade;
                            lista.Add(itemLista);
                        }

                        return(lista);
                    }

                    Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente("PTV"));
                    break;
                }
            }

            origemID = 0;
            return(null);
        }
Exemplo n.º 25
0
        public bool ValidarProduto(PTVProduto item, DateTecno ptvData, List <PTVProduto> lista, int ptvID)
        {
            lista = lista ?? new List <PTVProduto>();

            if (item.OrigemTipo <= 0)
            {
                Validacao.Add(Mensagem.PTV.TipoOrigemObrigatorio);
            }

            if (item.Origem <= 0 && string.IsNullOrEmpty(item.OrigemNumero))
            {
                Validacao.Add(Mensagem.PTV.OrigemObrigatorio);
            }

            var loteBus = new LoteBus();

            if (item.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO && loteBus.VerificarSeCfoJaAssociadaALote(item.Origem))
            {
                Validacao.Add(Mensagem.EmissaoCFO.DocumentoOrigemDeveSerDeMesmaUC);
                return(false);
            }

            #region Saldo

            //TODO
            decimal saldo        = 0;
            int     produtorItem = 0;
            switch ((eDocumentoFitossanitarioTipo)item.OrigemTipo)
            {
            case eDocumentoFitossanitarioTipo.CFO:
                EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                EmissaoCFO    cfo           = emissaoCFOBus.Obter(item.Origem);
                saldo        = cfo.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade);
                produtorItem = cfo.ProdutorId;

                if (cfo.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido)
                {
                    Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                }

                DateTime dataVencimentoCFO = cfo.DataEmissao.Data.GetValueOrDefault().AddDays(cfo.ValidadeCertificado);
                if (dataVencimentoCFO < DateTime.Today)
                {
                    Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                }

                if (cfo.DataEmissao.Data > ptvData.Data)
                {
                    Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                }
                break;

            case eDocumentoFitossanitarioTipo.CFOC:
                EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus();
                EmissaoCFOC    cfoc           = emissaoCFOCBus.Obter(item.Origem);
                saldo = cfoc.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade);

                if (cfoc.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido)
                {
                    Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                }

                DateTime dataVencimentoCFOC = cfoc.DataEmissao.Data.GetValueOrDefault().AddDays(cfoc.ValidadeCertificado);
                if (dataVencimentoCFOC < DateTime.Today)
                {
                    Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                }

                if (cfoc.DataEmissao.Data > ptvData.Data)
                {
                    Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                }
                break;

            case eDocumentoFitossanitarioTipo.PTVOutroEstado:
                PTVOutroBus ptvOutroBus = new PTVOutroBus();
                PTVOutro    ptvOutro    = ptvOutroBus.Obter(item.Origem);
                saldo = ptvOutro.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade);

                if (ptvOutro.Situacao != (int)ePTVOutroSituacao.Valido)
                {
                    Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                }

                if (ptvOutro.ValidoAte.Data.GetValueOrDefault() < DateTime.Today)
                {
                    Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                }

                if (ptvOutro.DataEmissao.Data > ptvData.Data)
                {
                    Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                }
                break;

            case eDocumentoFitossanitarioTipo.PTV:
                PTVInternoBus ptvBus = new PTVInternoBus();
                PTV           ptv    = ptvBus.Obter(item.Origem);
                saldo        = ptv.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade);
                produtorItem = ptv.ResponsavelEmpreendimento;
                break;
            }

            #endregion Saldo

            if (lista.Count > 0 && produtorItem > 0)
            {
                int        produtorOrigem = 0;
                PTVProduto primeiroItem   = lista.FirstOrDefault(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO || x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.PTV);

                if (primeiroItem != null)
                {
                    switch ((eDocumentoFitossanitarioTipo)primeiroItem.OrigemTipo)
                    {
                    case eDocumentoFitossanitarioTipo.CFO:
                        EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                        EmissaoCFO    cfo           = emissaoCFOBus.Obter(primeiroItem.Origem, true);
                        produtorOrigem = cfo.ProdutorId;
                        break;

                    case eDocumentoFitossanitarioTipo.PTV:
                        PTVInternoBus ptvBus = new PTVInternoBus();
                        PTV           ptv    = ptvBus.Obter(primeiroItem.Origem, true);
                        produtorOrigem = ptv.ResponsavelEmpreendimento;
                        break;
                    }

                    if (produtorItem != produtorOrigem)
                    {
                        Validacao.Add(Mensagem.PTV.ProdutorDiferente);
                    }
                }
            }

            if (!Validacao.EhValido)
            {
                return(false);
            }

            if (item.Cultura <= 0)
            {
                Validacao.Add(Mensagem.PTV.CulturaObrigatorio);
            }
            if (item.Cultivar <= 0)
            {
                Validacao.Add(Mensagem.PTV.CultivarObrigatorio);
            }

            if (item.UnidadeMedida <= 0)
            {
                Validacao.Add(Mensagem.PTV.UnidadeMedidaObrigatorio);
            }

            if (item.Quantidade <= 0)
            {
                Validacao.Add(Mensagem.PTV.QuantidadeObrigatorio);
            }

            if (lista.Count(x => !x.Equals(item)) >= 5)
            {
                Validacao.Add(Mensagem.PTV.QauntidadeItensUltrapassado);
            }

            if (Validacao.EhValido && lista.Count > 0)
            {
                if (lista.Count(x => x.Origem == item.Origem && item.Cultivar == x.Cultivar && x.UnidadeMedida == item.UnidadeMedida && !x.Equals(item)) > 0)
                {
                    Validacao.Add(Mensagem.PTV.ITemProdutoJaAdicionado(item.OrigemTipoTexto));
                }

                if (lista.Count(x => x.EmpreendimentoId != item.EmpreendimentoId && x.EmpreendimentoId > 0) > 0)
                {
                    Validacao.Add(Mensagem.PTV.EmpreendimentoOrigemDiferente);
                }
            }

            if (Validacao.EhValido)
            {
                if (_da.EmpreendimentoPossuiEPTVBloqueado(item.EmpreendimentoId))
                {
                    Validacao.Add(Mensagem.PTV.EmpreendimentoEPTVBloqueado);
                }
            }

            if (Validacao.EhValido)
            {
                if (item.OrigemTipo != (int)eDocumentoFitossanitarioTipo.CFCFR && item.OrigemTipo != (int)eDocumentoFitossanitarioTipo.TF)
                {
                    decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)item.OrigemTipo, item.Origem, item.OrigemNumero, item.Cultivar, item.UnidadeMedida, ptvData.Data.GetValueOrDefault().Year, ptvID);

                    decimal quantidadeAdicionada = lista.Where(x => x.OrigemTipo == item.OrigemTipo && x.Origem == item.Origem && x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida && !x.Equals(item)).Sum(x => x.Quantidade);

                    if ((saldoOutrosDoc + quantidadeAdicionada + item.Quantidade) > saldo)
                    {
                        Validacao.Add(Mensagem.PTV.SomaQuantidadeInvalida);
                    }
                }
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 26
0
        //Valida um item que está sendo incluído no lote
        public void Lote(LoteItem item, DateTecno loteData, int empreendimentoID, List <LoteItem> lista, int loteID)
        {
            if (empreendimentoID <= 0)
            {
                Validacao.Add(Mensagem.Lote.EmpreendimentoObrigatorio);
                return;
            }

            if (item.OrigemTipo <= 0)
            {
                Validacao.Add(Mensagem.Lote.OrigemObrigatorio);
            }

            if (item.Cultura <= 0)
            {
                Validacao.Add(Mensagem.Lote.CulturaObrigatoria);
            }

            if (item.Cultivar <= 0)
            {
                Validacao.Add(Mensagem.Lote.CultivarObrigatoria);
            }

            if (item.OrigemTipo >= 5 && item.Quantidade <= 0)
            {
                Validacao.Add(Mensagem.Lote.QuantidadeObrigatorio);
            }

            if (lista.Count(x => x.OrigemTipo == item.OrigemTipo && x.OrigemNumero == item.OrigemNumero && x.Serie == item.Serie && !x.Equals(item)) > 0)
            {
                Validacao.Add(Mensagem.Lote.OrigemJaAdicionada(item.OrigemTipoTexto, item.OrigemNumero.ToString()));
            }

            if (lista != null && lista.Count > 0 && !lista.Any(x => x.Cultivar == item.Cultivar))
            {
                Validacao.Add(Mensagem.Lote.CultivarUnico);
            }

            if (lista != null && lista.Count > 0 && lista.Any(x => x.UnidadeMedida != item.UnidadeMedida))
            {
                Validacao.Add(Mensagem.Lote.UnidadeMedidaUnico);
            }

            if (!Validacao.EhValido)
            {
                return;
            }

            int     auxiliar       = 0;
            decimal saldoDocOrigem = 0;
            List <IdentificacaoProduto> produtos = OrigemNumero(item.OrigemNumero, item.OrigemTipo, item.Serie, out auxiliar);

            if (produtos != null)
            {
                switch ((eDocumentoFitossanitarioTipo)item.OrigemTipo)
                {
                case eDocumentoFitossanitarioTipo.CFO:
                    EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus();
                    EmissaoCFO    cfo           = emissaoCFOBus.Obter(item.Origem);
                    saldoDocOrigem = cfo.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade);

                    if (cfo.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                    }

                    DateTime dataVencimentoCFO = cfo.DataAtivacao.Data.GetValueOrDefault().AddDays(cfo.ValidadeCertificado);
                    if (dataVencimentoCFO < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                    }

                    if (cfo.DataEmissao.Data > loteData.Data)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                    }
                    break;

                case eDocumentoFitossanitarioTipo.CFOC:
                    EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus();
                    EmissaoCFOC    cfoc           = emissaoCFOCBus.Obter(item.Origem);
                    saldoDocOrigem = cfoc.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade);

                    if (cfoc.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                    }

                    DateTime dataVencimentoCFOC = cfoc.DataAtivacao.Data.GetValueOrDefault().AddDays(cfoc.ValidadeCertificado);
                    if (dataVencimentoCFOC < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                    }

                    if (cfoc.DataEmissao.Data > loteData.Data)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                    }
                    break;

                case eDocumentoFitossanitarioTipo.PTV:
                    PTVInternoBus ptvInternoBus = new PTVInternoBus();
                    PTV           ptv           = ptvInternoBus.Obter(item.Origem);
                    saldoDocOrigem = ptv.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade);

                    if (ptv.Situacao != (int)ePTVOutroSituacao.Valido)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                    }

                    if (ptv.ValidoAte.Data.GetValueOrDefault() < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto));
                    }

                    if (ptv.DataEmissao.Data > loteData.Data)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                    }
                    break;

                case eDocumentoFitossanitarioTipo.PTVOutroEstado:
                    PTVOutroBus ptvOutroBus = new PTVOutroBus();
                    PTVOutro    ptvOutro    = ptvOutroBus.Obter(item.Origem);
                    saldoDocOrigem = ptvOutro.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade);

                    if (ptvOutro.Situacao != (int)ePTVOutroSituacao.Valido &&
                        ptvOutro.Situacao != (int)ePTVOutroSituacao.Invalido)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemSituacaoInvalida(item.OrigemTipoTexto));
                    }

                    if (ptvOutro.DataEmissao.Data > loteData.Data)
                    {
                        Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData);
                    }
                    break;
                }

                string empreendimento = string.Empty;
                if ((eDocumentoFitossanitarioTipo)item.OrigemTipo == eDocumentoFitossanitarioTipo.PTVOutroEstado)
                {
                    empreendimento = _da.PTVOutroEstadoJaAssociado(item.Origem, empreendimentoID);

                    if (!string.IsNullOrEmpty(empreendimento))
                    {
                        Validacao.Add(Mensagem.Lote.OrigemEmpreendimentoUtilizadoOutroUF(item.OrigemTipoTexto, item.OrigemNumero.ToString(), empreendimento));
                    }
                }

                if (item.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO ||
                    item.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFOC ||
                    item.OrigemTipo == (int)eDocumentoFitossanitarioTipo.PTVOutroEstado)
                {
                    if (!_da.UCPossuiCultivar(empreendimentoID, item.Cultivar))
                    {
                        Validacao.Add(Mensagem.Lote.CultivarDesassociadoUC(item.CultivarTexto));
                    }


                    decimal quantidadeAdicionada = lista.Where(x => x.OrigemTipo == item.OrigemTipo && x.Origem == item.Origem && x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida && !x.Equals(item)).Sum(x => x.Quantidade);



                    decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)item.OrigemTipo, item.Origem, item.OrigemNumero, item.Cultivar, item.UnidadeMedida, DateTime.Now.Year, item.Id);


                    if (item.ExibeKg)
                    {
                        item.Quantidade = item.Quantidade / 1000;
                    }

                    if ((saldoOutrosDoc + item.Quantidade) > saldoDocOrigem)
                    {
                        Validacao.Add(Mensagem.PTV.SomaQuantidadeInvalida);
                    }

                    //SALDO DA UC
                    decimal saldoUc = _da.obterSaldoRestanteCultivarUC(empreendimentoID, item.Cultivar, item.Cultura);



                    if (saldoUc <= 0)
                    {
                        Validacao.Add(Mensagem.Lote.CultivarSaldoTodoUtilizado);
                    }


                    if ((quantidadeAdicionada + item.Quantidade) > saldoUc)
                    {
                        Validacao.Add(Mensagem.Lote.CultivarQuantidadeSomaSuperior);
                    }
                }

                item.Quantidade = saldoDocOrigem;
            }
        }
Exemplo n.º 27
0
        public ActionResult VerificarCredenciadoHabilitado(EmissaoCFOC entidade)
        {
            _validar.ValidarAssociarResponsavelTecnicoHabilitado(entidade);

            return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
        }