public ActionResult ValidarUnidadeProducaoItem(UnidadeProducaoItem unidade, int empreendimento)
        {
            HabilitarEmissaoCFOCFOC credenciadoHabilitado = null;
            List <Mensagem>         Validacoes            = new List <Mensagem>();
            Cultura cultura = new Cultura()
            {
                Id = unidade.CulturaId, Nome = unidade.CulturaTexto
            };

            foreach (var responsavel in unidade.ResponsaveisTecnicos)
            {
                credenciadoHabilitado = _busHabilitacaoCFOCFOC.ObterPorCredenciado(responsavel.Id);

                if (Validacao.EhValido)
                {
                    credenciadoHabilitado.Pragas.ForEach(x =>
                    {
                        x.Praga.Culturas = _pragaBus.ObterCulturas(x.Praga.Id);
                    });

                    _validar.ValidarResponsavelTecnicoHabilitado(credenciadoHabilitado, cultura);
                }
            }

            Validacao.Erros.AddRange(_validar.SalvarItemUnidadeProducao(unidade, empreendimento));

            return(Json(new
            {
                @Msg = Validacao.Erros,
                @EhValido = Validacao.EhValido,
            }));
        }
예제 #2
0
 public UnidadeProducaoItemVM()
 {
     UnidadeProducaoItem = new UnidadeProducaoItem();
     LstProdutores       = new List <SelectListItem>();
     LstUnidadeMedida    = new List <SelectListItem>();
     TiposCoordenada     = new List <SelectListItem>();
     Datuns      = new List <SelectListItem>();
     Fusos       = new List <SelectListItem>();
     Hemisferios = new List <SelectListItem>();
 }
예제 #3
0
 public UnidadeProducaoItemVM(UnidadeProducaoItem item, List <CoordenadaTipo> lstTiposCoordenada = null, List <Datum> lstDatuns = null,
                              List <Fuso> lstFusos = null, List <CoordenadaHemisferio> lstHemisferios = null, List <Lista> lstCultivar = null, List <PessoaLst> lstProdutores = null)
 {
     this.UnidadeProducaoItem = item ?? new UnidadeProducaoItem();
     this.TiposCoordenada     = ViewModelHelper.CriarSelectList(lstTiposCoordenada.Where(x => x.Id == 3).ToList(), true, false);
     this.Datuns        = ViewModelHelper.CriarSelectList(lstDatuns.Where(x => x.Id == 1).ToList(), true, false);
     this.Fusos         = ViewModelHelper.CriarSelectList(lstFusos.Where(x => x.Id == 24).ToList(), true, false);
     this.Hemisferios   = ViewModelHelper.CriarSelectList(lstHemisferios.Where(x => x.Id == 1).ToList(), true, false);
     this.LstCultivar   = ViewModelHelper.CriarSelectList(lstCultivar, false, true);
     this.LstProdutores = ViewModelHelper.CriarSelectList(lstProdutores);
 }
        public UnidadeProducaoItem ObterUnidadeProducaoItem(int id)
        {
            UnidadeProducaoItem item = null;

            try
            {
                item = _da.ObterUnidadeProducaoItem(id);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(item);
        }
        public ActionResult AdicionarUnidadeProducao(int empreendimento, UnidadeProducaoItem unidade = null, bool visualizar = false)
        {
            UnidadeProducaoItemVM vm = new UnidadeProducaoItemVM(
                unidade,
                ListaCredenciadoBus.TiposCoordenada,
                ListaCredenciadoBus.Datuns,
                ListaCredenciadoBus.Fusos,
                ListaCredenciadoBus.Hemisferios,
                _culturaBus.ObterLstCultivar(unidade.CulturaId),
                _empreendimentoBus.ObterResponsaveisLista(empreendimento));

            vm.IsVisualizar = visualizar;

            return(PartialView("UnidadeProducaoItemPartial", vm));
        }
        public ActionResult AdicionarUnidadeProducao(int empreendimento, UnidadeProducaoItem unidade = null, bool visualizar = false)
        {
            UnidadeProducaoItemVM vm = new UnidadeProducaoItemVM();

            if (unidade != null)
            {
                vm.UnidadeProducaoItem = unidade;
            }

            vm.TiposCoordenada = ViewModelHelper.CriarSelectList(_listaBus.TiposCoordenada.Where(x => x.Id == 3).ToList(), true, false);
            vm.Datuns          = ViewModelHelper.CriarSelectList(_listaBus.Datuns.Where(x => x.Id == 1).ToList(), true, false);
            vm.Fusos           = ViewModelHelper.CriarSelectList(_listaBus.Fusos.Where(x => x.Id == 24).ToList(), true, false);
            vm.Hemisferios     = ViewModelHelper.CriarSelectList(_listaBus.Hemisferios.Where(x => x.Id == 1).ToList(), true, false);
            vm.LstCultivar     = ViewModelHelper.CriarSelectList(_culturaBus.ObterLstCultivar(unidade.CulturaId), false, true);
            vm.LstProdutores   = ViewModelHelper.CriarSelectList(_empreendimentoBus.ObterResponsaveis(empreendimento));

            vm.IsVisualizar = visualizar;

            return(PartialView("UnidadeProducaoPartialItem", vm));
        }
        public List <Mensagem> SalvarItemUnidadeProducao(UnidadeProducaoItem unidade, int empreendimentoID)
        {
            List <Mensagem> mensagens = new List <Mensagem>();

            if (unidade.PossuiCodigoUP)
            {
                if (unidade.CodigoUP < 1)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.CodigoUPObrigatorio);
                }
                else
                {
                    if (unidade.CodigoUP.ToString().Length < 17)
                    {
                        mensagens.Add(Mensagem.UnidadeProducao.CodigoUPInvalido);
                    }
                    else
                    {
                        if (_da.CodigoUPExistente(unidade, empreendimentoID))
                        {
                            mensagens.Add(Mensagem.UnidadeProducao.CodigoUPJaExiste);
                        }
                    }
                }
            }

            if (unidade.TipoProducao == (int)eUnidadeProducaoTipoProducao.MaterialPropagacao)
            {
                if (String.IsNullOrEmpty(unidade.RenasemNumero))
                {
                    mensagens.Add(Mensagem.UnidadeProducao.RenasemNumeroObrigatorio);
                }

                if (String.IsNullOrEmpty(unidade.DataValidadeRenasem))
                {
                    mensagens.Add(Mensagem.Padrao.DataObrigatoria("UnidadeProducaoItem_DataValidadeRenasem", "validade"));
                }

                if (!String.IsNullOrEmpty(unidade.DataValidadeRenasem) && !ValidacoesGenericasBus.ValidarData(unidade.DataValidadeRenasem))
                {
                    mensagens.Add(Mensagem.Padrao.DataInvalida("UnidadeProducaoItem_DataValidadeRenasem", "validade"));
                }


                if (!String.IsNullOrEmpty(unidade.DataValidadeRenasem) && ValidacoesGenericasBus.ValidarData(unidade.DataValidadeRenasem) && Convert.ToDateTime(unidade.DataValidadeRenasem) <= DateTime.Today)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.RenasemDataVencimentoMenorQueDataAtual);
                }
            }
            else
            {
                unidade.RenasemNumero       = string.Empty;
                unidade.DataValidadeRenasem = string.Empty;
            }

            if (unidade.AreaHA <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.AreaHAObrigatorio);
            }

            if (unidade.Coordenada.EastingUtm.GetValueOrDefault() < 1 || unidade.Coordenada.NorthingUtm.GetValueOrDefault() < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CoordenadaObrigatorio);
            }

            if (unidade.Coordenada.EastingUtm <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.EastingUtmObrigatorio);
            }

            if (unidade.Coordenada.NorthingUtm <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.NorthingUtmObrigatorio);
            }

            if (unidade.CulturaId < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CulturaObrigatorio);
            }

            if (unidade.CultivarId < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CultivarObrigatorio);
            }

            if (string.IsNullOrEmpty(unidade.DataPlantioAnoProducao))
            {
                mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoObrigatorio);
            }
            else
            {
                string[] mesAno = unidade.DataPlantioAnoProducao.Split('/');

                if (unidade.DataPlantioAnoProducao.Length != 7 || mesAno.Length < 2 || Convert.ToInt32(mesAno.GetValue(0)) <= 0 || Convert.ToInt32(mesAno.GetValue(0)) > 12 || Convert.ToInt32(mesAno.GetValue(1)) <= 0)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoInvalida);
                }
                else
                {
                    if (Convert.ToInt32(mesAno.GetValue(1)) > DateTime.Now.Year || (Convert.ToInt32(mesAno.GetValue(0)) > DateTime.Now.Month && Convert.ToInt32(mesAno.GetValue(1)) == DateTime.Now.Year))
                    {
                        mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoMaiorAtual);
                    }
                }
            }

            if (unidade.Produtores.Count < 1)
            {
                Validacao.Add(Mensagem.UnidadeProducao.ProdutorObrigatorio);
            }

            unidade.Produtores.ForEach(x =>
            {
                if (!_da.VerificarResponsavelEmpreendimento(empreendimentoID, x.Id.GetValueOrDefault()))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.ProdutorNaoEstaMaisVinculadoNoEmpreendimento(x.NomeRazao));
                }
            });

            if (unidade.ResponsaveisTecnicos.Count < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.ResponsavelTecnicoObrigatorio);
            }
            else
            {
                foreach (var item in unidade.ResponsaveisTecnicos)
                {
                    if (!item.ArtCargoFuncao)
                    {
                        if (!ValidacoesGenericasBus.ValidarData(item.DataValidadeART))
                        {
                            mensagens.Add(Mensagem.Padrao.DataInvalida("UnidadeProducaoItem_ResponsavelTecnico_DataValidadeART", "validade da ART"));
                        }
                    }
                    else
                    {
                        item.DataValidadeART = string.Empty;
                    }
                }
            }

            if (unidade.EstimativaProducaoQuantidadeAno <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.EstimativaProducaoQuantidadeAnoObrigatorio);
            }

            if (string.IsNullOrEmpty(unidade.EstimativaProducaoUnidadeMedida))
            {
                mensagens.Add(Mensagem.UnidadeProducao.EstimativaProducaoUnidadeMedidaObrigatorio);
            }

            return(mensagens);
        }
예제 #8
0
        public UnidadeProducaoItemPDF(UnidadeProducaoItem item)
        {
            CodigoUP      = item.CodigoUP;
            AreaHa        = item.AreaHA.ToStringTrunc(4);
            QuantidadeAno = item.EstimativaProducaoQuantidadeAno.ToString();
            UnidadeMedida = item.EstimativaProducaoUnidadeMedida;

            Cultivar = new CultivarPDF()
            {
                Nome    = item.CultivarTexto,
                Cultura = item.CulturaTexto
            };

            //Produtores
            Produtores = new List <ResponsavelPDF>();
            foreach (var produtor in item.Produtores)
            {
                if (Produtores.Exists(x => x.CPFCNPJ == produtor.CpfCnpj))
                {
                    continue;
                }
                Produtores.Add(new ResponsavelPDF()
                {
                    NomeRazaoSocial = produtor.NomeRazao, CPFCNPJ = produtor.CpfCnpj, Tipo = produtor.Tipo.GetValueOrDefault()
                });
            }

            #region Responsaveis Tecnicos

            string dadosCompletos = string.Empty;
            ResponsaveisTecnicos = new List <ResponsavelPDF>();

            foreach (var responsavel in item.ResponsaveisTecnicos)
            {
                dadosCompletos = responsavel.NomeRazao;

                if (!string.IsNullOrEmpty(responsavel.ProfissaoTexto))
                {
                    dadosCompletos += ", " + responsavel.ProfissaoTexto;
                }

                if (!string.IsNullOrEmpty(responsavel.OrgaoClasseSigla))
                {
                    dadosCompletos += ", " + responsavel.OrgaoClasseSigla;
                }

                if (!string.IsNullOrEmpty(responsavel.NumeroRegistro))
                {
                    dadosCompletos += " " + responsavel.NumeroRegistro;
                }

                ResponsaveisTecnicos.Add(new ResponsavelPDF()
                {
                    CPFCNPJ          = responsavel.CpfCnpj,
                    NomeRazaoSocial  = responsavel.NomeRazao,
                    CFONumero        = responsavel.CFONumero,
                    Profissao        = responsavel.ProfissaoTexto,
                    OrgaoClasseSigla = responsavel.OrgaoClasseSigla,
                    NumeroRegistro   = responsavel.NumeroRegistro,
                    DadosCompletos   = dadosCompletos
                });
            }

            #endregion Responsaveis Tecnicos
        }
예제 #9
0
        public void ValidarProduto(int cfo, int empreendimento, IdentificacaoProduto item, List <IdentificacaoProduto> lista)
        {
            lista = lista ?? new List <IdentificacaoProduto>();

            if (item.UnidadeProducao <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutoUnidadeProducaoObrigatorio);
                return;
            }

            TituloInternoBus tituloBus = new TituloInternoBus();
            Titulo           titulo    = tituloBus.UnidadeProducaoPossuiAberturaConcluido(item.UnidadeProducao);

            if (titulo == null || titulo.Id <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.UPTituloConcluido);
            }

            if (item.Quantidade <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutoQuantidadeObrigatorio);
            }

            ValidacoesGenericasBus.DataMensagem(item.DataInicioColheita, "CFO_Produto_InicioColheita", "início da colheita", false);

            ValidacoesGenericasBus.DataMensagem(item.DataFimColheita, "CFO_Produto_FimColheita", "fim da colheita", false);

            if (!Validacao.EhValido)
            {
                return;
            }

            if (DateTime.Parse(item.DataFimColheita.DataTexto) < DateTime.Parse(item.DataInicioColheita.DataTexto))
            {
                Validacao.Add(Mensagem.EmissaoCFO.DataFimColheitaNaoPodeSerMenorQueDataInicial);
            }

            TituloInternoDa tituloInternoDa = new TituloInternoDa();
            var             dependencia     = tituloInternoDa.ObterDependencia(titulo.Id, eCaracterizacao.UnidadeProducao);
            UnidadeProducao UnidadeProducao = _da.ObterUnidadeProducao(dependencia.Id, dependencia.DependenciaTid);

            UnidadeProducaoItem unidade = UnidadeProducao.UnidadesProducao.FirstOrDefault(x => x.Id == item.UnidadeProducao);

            if (unidade == null || unidade.Id <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.UPDessassociada(item.CodigoUP));
            }
            else
            {
                if (unidade.TipoProducao == (int)eUnidadeProducaoTipoProducao.MaterialPropagacao)
                {
                    if (string.IsNullOrEmpty(unidade.DataValidadeRenasem) || DateTime.Parse(unidade.DataValidadeRenasem) < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.EmissaoCFO.DataValidadeRENASEMMenorAtual(item.CodigoUP));
                    }
                }

                eUnidadeProducaoTipoProducao tipoProducao = ValidacoesGenericasBus.ObterTipoProducao(item.UnidadeMedidaId);

                DateTime dataSaldo = titulo.DataSituacao.Data.GetValueOrDefault();
                if (titulo.DataSituacao.Data.GetValueOrDefault().Year < DateTime.Today.Year)
                {
                    dataSaldo = new DateTime(DateTime.Today.Year - 1, dataSaldo.Month, dataSaldo.Day);
                }

                decimal totalTela = item.Quantidade + lista.Where(x => !x.Equals(item) && x.CultivarId == item.CultivarId && x.UnidadeMedidaId == item.UnidadeMedidaId).Sum(x => x.Quantidade);
                if (unidade.EstimativaProducaoQuantidadeAno < _da.ObterQuantidadeProduto(empreendimento, item.CultivarId, tipoProducao, item.UnidadeProducao, cfo, dataSaldo) + totalTela)
                {
                    Validacao.Add(Mensagem.EmissaoCFO.QuantidadeMensalInvalida(unidade.CodigoUP.ToString()));
                }
            }

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

            if (lista.Any(x => x.UnidadeProducao == item.UnidadeProducao && !x.Equals(item)))
            {
                Validacao.Add(Mensagem.EmissaoCFO.UnidadeProducaoJaAdicionado);
            }
        }