コード例 #1
0
        public ActionResult Criar(int id, int projetoDigitalId)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }

            UnidadeProducao caracterizacao = new UnidadeProducao();

            caracterizacao.Empreendimento.Id = id;

            if (!_validar.Acessar(caracterizacao.Empreendimento.Id, projetoDigitalId))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, projetoDigitalId = projetoDigitalId, Msg = Validacao.QueryParam() }));
            }

            UnidadeProducaoVM vm = new UnidadeProducaoVM(caracterizacao);

            vm.UnidadeProducao.Empreendimento = _caracterizacaoBus.ObterEmpreendimentoSimplificado(id);

            UnidadeProducaoInternoBus unidadeConsolidacaoInternoBus = new UnidadeProducaoInternoBus();
            UnidadeProducao           caracterizacaoInterno         = unidadeConsolidacaoInternoBus.ObterPorEmpreendimento(vm.UnidadeProducao.Empreendimento.InternoID, true);

            if (caracterizacaoInterno.Id > 0)
            {
                vm.UnidadeProducao.PossuiCodigoPropriedade = caracterizacaoInterno.PossuiCodigoPropriedade;
                vm.UnidadeProducao.CodigoPropriedade       = caracterizacaoInterno.CodigoPropriedade;
                vm.UnidadeProducao.InternoID = caracterizacaoInterno.Id;
            }

            return(View(vm));
        }
コード例 #2
0
        internal bool Salvar(UnidadeProducao caracterizacao, int projetoDigitalId)
        {
            if (!_caracterizacaoValidar.Basicas(caracterizacao.Empreendimento.Id))
            {
                return(false);
            }

            UnidadeProducao auxiliar = _da.ObterPorEmpreendimento(caracterizacao.Empreendimento.Id, true) ?? new UnidadeProducao();

            if (caracterizacao.Id <= 0 && auxiliar.Id > 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoCaracterizacaoJaCriada);
                return(false);
            }

            if (!Acessar(caracterizacao.Empreendimento.Id, projetoDigitalId))
            {
                return(false);
            }

            if (caracterizacao.PossuiCodigoPropriedade)
            {
                if (caracterizacao.CodigoPropriedade < 1)
                {
                    Validacao.Add(Mensagem.UnidadeProducao.CodigoPropriedadeObrigatorio);
                }
                else
                {
                    if (caracterizacao.CodigoPropriedade > Convert.ToInt32(_configSys.Obter <String>(ConfiguracaoSistema.KeyUnidadeProducaoMaxCodigoPropriedade)))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoPropriedadeSuperiorMaximo);
                    }
                    else if (_da.CodigoPropriedadeExistente(caracterizacao))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoPropriedadeJaExiste);
                    }
                }
            }

            if (string.IsNullOrEmpty(caracterizacao.LocalLivroDisponivel))
            {
                Validacao.Add(Mensagem.UnidadeProducao.LocalLivroDisponivelObrigatorio);
            }

            if (caracterizacao.UnidadesProducao.Count < 1)
            {
                Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoObrigatorio);
            }

            for (int i = 0; i < caracterizacao.UnidadesProducao.Count; i++)
            {
                if (SalvarItemUnidadeProducao(caracterizacao.UnidadesProducao[i], caracterizacao.Empreendimento.Id).Count > 0)
                {
                    Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoItemIncorreto);
                    break;
                }
            }

            return(Validacao.EhValido);
        }
コード例 #3
0
        public ActionResult Editar(UnidadeProducao caracterizacao, int projetoDigitalId)
        {
            Cultura  cultura  = null;
            Cultivar cultivar = null;

            foreach (var unidade in caracterizacao.UnidadesProducao)
            {
                foreach (var responsavel in unidade.ResponsaveisTecnicos)
                {
                    cultura = new Cultura()
                    {
                        Id = unidade.CulturaId, Nome = unidade.CulturaTexto
                    };
                    cultivar = new Cultivar()
                    {
                        Id = unidade.CultivarId.GetValueOrDefault(), Nome = unidade.CultivarTexto
                    };

                    var validacaoResponsavelTecnico = ObterResponsavelTecnico(responsavel.Id, cultura, cultivar);
                    if (!Validacao.EhValido)
                    {
                        return(validacaoResponsavelTecnico);
                    }
                }
            }

            _bus.Salvar(caracterizacao, projetoDigitalId);
            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @UrlRedirecionar = Url.Action("", "Caracterizacao", new { id = caracterizacao.Empreendimento.Id, projetoDigitalId = projetoDigitalId, Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
        public UnidadeProducaoPDF(UnidadeProducao unidadeProducao)
        {
            CodigoPropriedade = String.Format("{0:D4}", unidadeProducao.CodigoPropriedade);

            //Unidades Item
            foreach (var item in unidadeProducao.UnidadesProducao)
            {
                Unidades.Add(new UnidadeProducaoItemPDF(item));
            }

            //Straggs
            List <ResponsavelPDF> responsaveis = new List <ResponsavelPDF>();

            Unidades.SelectMany(x => x.ResponsaveisTecnicos).ToList().ForEach(resp =>
            {
                if (!responsaveis.Exists(x => x.CPFCNPJ == resp.CPFCNPJ))
                {
                    responsaveis.Add(resp);
                }
            });

            ProdutoresStragg                    = EntitiesBus.Concatenar(Unidades.SelectMany(x => x.Produtores).GroupBy(x => new { x.NomeRazaoSocial, x.Tipo, x.CPFCNPJ }).Select(g => g.First()).Select(x => x.NomeRazaoSocial + ", " + (x.Tipo == PessoaTipo.FISICA ? "CPF " : "CNPJ ") + x.CPFCNPJ).ToList());
            ResponsaveisTecnicosStragg          = EntitiesBus.Concatenar(responsaveis.Select(x => x.DadosCompletos).ToList());
            ResponsaveisTecnicosCFONumeroStragg = EntitiesBus.Concatenar(responsaveis.Select(x => x.CFONumero.Trim()).ToList());

            if (responsaveis.Count > 1)
            {
                ResponsaveisTecnicosCFONumeroStragg += " respectivamente";
            }
        }
コード例 #5
0
        internal bool CopiarDadosCredenciado(UnidadeProducao caracterizacao)
        {
            if (caracterizacao.CredenciadoID <= 0)
            {
                Validacao.Add(Mensagem.UnidadeProducao.CopiarCaractizacaoCadastrada);
            }

            string auxiliar = _da.CodigoPropriedadeExistenteImportar(caracterizacao);

            if (!string.IsNullOrEmpty(auxiliar))
            {
                Validacao.Add(Mensagem.UnidadeProducao.CodigoPropriedadeExistenteImportar(auxiliar));
            }

            caracterizacao.UnidadesProducao.ForEach(unidade => {
                EmpreendimentoCaracterizacao emp = _da.VerificarCodigoUPJaCadastrado(unidade.CodigoUP, caracterizacao.Empreendimento.Id);

                if (emp != null && emp.Id > 0)
                {
                    Validacao.Add(Mensagem.UnidadeProducao.CodigoUPJaAssociado(emp.Codigo.GetValueOrDefault(), emp.Denominador));
                }
            });

            return(Validacao.EhValido);
        }
コード例 #6
0
        public UnidadeProducao ObterPorEmpreendimento(int empreendimentoId, int projetoDigitalId = 0, bool simplificado = false, BancoDeDados banco = null)
        {
            UnidadeProducao caracterizacao = null;

            try
            {
                CaracterizacaoBus     caracterizacaoBus         = new CaracterizacaoBus();
                List <Caracterizacao> caracterizacoesAssociadas = caracterizacaoBus.ObterCaracterizacoesAssociadasProjetoDigital(projetoDigitalId).Where(x => x.Tipo == eCaracterizacao.UnidadeProducao).ToList();

                if (caracterizacoesAssociadas != null && caracterizacoesAssociadas.Count > 0)
                {
                    caracterizacao = ObterHistorico(caracterizacoesAssociadas.FirstOrDefault().Id, caracterizacoesAssociadas.FirstOrDefault().Tid);
                }
                else
                {
                    caracterizacao = _da.ObterPorEmpreendimento(empreendimentoId, simplificado);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
コード例 #7
0
        public bool ValidarAssociar(int id, int projetoDigitalID = 0)
        {
            UnidadeProducao caracterizacao = _da.Obter(id);

            _validar.Salvar(caracterizacao, projetoDigitalID);

            return(Validacao.EhValido);
        }
コード例 #8
0
        internal bool CopiarDadosInstitucional(UnidadeProducao caracterizacao)
        {
            if (caracterizacao.InternoID <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.CopiarCaractizacaoCadastrada);
            }

            return(Validacao.EhValido);
        }
コード例 #9
0
        public ActionResult Criar(UnidadeProducao caracterizacao, int projetoDigitalId = 0)
        {
            _bus.Salvar(caracterizacao, projetoDigitalId);

            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @UrlRedirecionar = Url.Action("", "Caracterizacao", new { id = caracterizacao.Empreendimento.Id, projetoDigitalId = projetoDigitalId, Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        public bool PodeEnviar(int caracterizacaoID)
        {
            UnidadeProducao caracterizacao = _da.Obter(caracterizacaoID);

            foreach (var item in caracterizacao.UnidadesProducao)
            {
                if (item.CodigoUP.ToString().Substring(7, 4) != caracterizacao.CodigoPropriedade.ToString("D4"))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                }
            }

            return(Validacao.EhValido);
        }
コード例 #11
0
        public bool CopiarDadosCredenciado(Dependencia dependencia, int empreendimentoInternoId, BancoDeDados banco, BancoDeDados bancoCredenciado = null)
        {
            if (banco == null)
            {
                return(false);
            }

            if (_validar == null)
            {
                _validar = new UnidadeProducaoValidar();
            }

            #region Configurar Unidade de Produção

            Cred.UnidadeProducaoBus credenciadoBus = new Cred.UnidadeProducaoBus();
            UnidadeProducao         caracterizacao = credenciadoBus.ObterHistorico(dependencia.DependenciaId, dependencia.DependenciaTid);

            caracterizacao.Empreendimento.Id = empreendimentoInternoId;
            caracterizacao.CredenciadoID     = caracterizacao.Id;
            caracterizacao.Id  = 0;
            caracterizacao.Tid = string.Empty;
            caracterizacao.UnidadesProducao.SelectMany(u => u.ResponsaveisTecnicos).ToList().ForEach(r => { r.IdRelacionamento = 0; });
            caracterizacao.UnidadesProducao.SelectMany(u => u.Produtores).ToList().ForEach(p => {
                p.Id = _busCaracterizacao.ObterPessoaID(p.CpfCnpj, banco);
                p.IdRelacionamento = 0;
            });

            #endregion

            if (_validar.CopiarDadosCredenciado(caracterizacao))
            {
                GerenciadorTransacao.ObterIDAtual();

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

                    //Setar ID
                    caracterizacao.Id = ObterPorEmpreendimento(empreendimentoInternoId, simplificado: true, banco: bancoDeDados).Id;

                    _da.CopiarDadosCredenciado(caracterizacao, bancoDeDados);

                    credenciadoBus.AtualizarInternoIdTid(caracterizacao.CredenciadoID, caracterizacao.Id, GerenciadorTransacao.ObterIDAtual(), bancoCredenciado);

                    bancoDeDados.Commit();
                }
            }

            return(Validacao.EhValido);
        }
コード例 #12
0
        public bool PodeEnviar(int caracterizacaoID)
        {
            UnidadeProducao caracterizacao = _da.Obter(caracterizacaoID);

            foreach (var item in caracterizacao.UnidadesProducao)
            {
                if (!UnidadeProducaoGenerator.CodigoUpHasCodigoPropriedade(caracterizacao.CodigoPropriedade, item.CodigoUP))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                }
            }

            return(Validacao.EhValido);
        }
コード例 #13
0
        public bool CopiarDadosInstitucional(int empreendimentoID, int empreendimentoInternoID, BancoDeDados banco)
        {
            if (banco == null)
            {
                return(false);
            }

            if (_validar == null)
            {
                _validar = new UnidadeProducaoValidar();
            }

            #region Configurar Caracterização

            UnidadeProducaoInternoBus unidadeConsolidacaoInternoBus = new UnidadeProducaoInternoBus();
            UnidadeProducao           caracterizacao = unidadeConsolidacaoInternoBus.ObterPorEmpreendimento(empreendimentoInternoID);

            caracterizacao.Empreendimento.Id = empreendimentoID;
            caracterizacao.InternoID         = caracterizacao.Id;
            caracterizacao.InternoTID        = caracterizacao.Tid;
            caracterizacao.UnidadesProducao.SelectMany(u => u.Produtores).ToList().ForEach(p => { p.IdRelacionamento = 0; });
            caracterizacao.UnidadesProducao.SelectMany(u => u.ResponsaveisTecnicos).ToList().ForEach(r => { r.IdRelacionamento = 0; });

            //Remove UPs nao relacionadas.
            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
            CredenciadoPessoa credenciado       = caracterizacaoBus.ObterCredenciado(User.FuncionarioId, true);

            //REMOVIDO FILTRO QUE IMPORTAVA APENAS UP's VINCULADAS AO RESPONSAVEL TECNICO
            //caracterizacao.UnidadesProducao.RemoveAll(x => !x.ResponsaveisTecnicos.Any(y => y.CpfCnpj == credenciado.Pessoa.CPFCNPJ));

            #endregion

            if (_validar.CopiarDadosInstitucional(caracterizacao))
            {
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, UsuarioCredenciado))
                {
                    bancoDeDados.IniciarTransacao();

                    //Setar ID do credenciado
                    caracterizacao.Id = ObterPorEmpreendimento(empreendimentoID, simplificado: true, banco: bancoDeDados).Id;

                    _da.CopiarDadosInstitucional(caracterizacao, bancoDeDados);

                    bancoDeDados.Commit();
                }
            }

            return(Validacao.EhValido);
        }
コード例 #14
0
        public UnidadeProducao ObterPorEmpreendimento(int EmpreendimentoId, bool simplificado = false, BancoDeDados banco = null)
        {
            UnidadeProducao caracterizacao = null;

            try
            {
                caracterizacao = _da.ObterPorEmpreendimento(EmpreendimentoId, simplificado: simplificado);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
コード例 #15
0
        public ActionResult VisualizarCredenciado(int projetoDigitalId, int protocoloId = 0)
        {
            ProjetoDigitalCredenciadoBus _busProjetoDigitalCredenciado = new ProjetoDigitalCredenciadoBus();
            ProjetoDigital projeto = _busProjetoDigitalCredenciado.Obter(projetoDigitalId);

            UnidadeProducao   caracterizacao = _busCredenciado.ObterPorEmpreendimento(projeto.EmpreendimentoId.GetValueOrDefault(), projetoDigitalId);
            UnidadeProducaoVM vm             = new UnidadeProducaoVM()
            {
                IsVisualizar = true
            };

            vm.UnidadeProducao = caracterizacao;
            vm.UrlRetorno      = Url.Action("Analisar", "../AnaliseItens", new { protocoloId = protocoloId, requerimentoId = projeto.RequerimentoId });

            return(View("Visualizar", vm));
        }
コード例 #16
0
        public ActionResult Editar(int id, int projetoDigitalId)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }

            if (!_validar.Acessar(id, projetoDigitalId))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, projetoDigitalId = projetoDigitalId, Msg = Validacao.QueryParam() }));
            }

            UnidadeProducao   caracterizacao = _bus.ObterPorEmpreendimento(id);
            UnidadeProducaoVM vm             = new UnidadeProducaoVM(caracterizacao);

            return(View(vm));
        }
コード例 #17
0
        public ActionResult Editar(int id)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            if (!_validar.Acessar(id))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, Msg = Validacao.QueryParam() }));
            }

            UnidadeProducao   caracterizacao = _bus.ObterPorEmpreendimento(id);
            UnidadeProducaoVM vm             = new UnidadeProducaoVM();

            vm.UnidadeProducao = caracterizacao;
            return(View(vm));
        }
コード例 #18
0
        internal UnidadeProducao ObterPorEmpreendimento(int empreendimentoId, bool simplificado = false, BancoDeDados banco = null)
        {
            UnidadeProducao caracterizacao = new UnidadeProducao();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select t.id from {0}crt_unidade_producao t where t.empreendimento = :empreendimento", EsquemaBanco);
                comando.AdicionarParametroEntrada("empreendimento", empreendimentoId, DbType.Int32);

                object valor = bancoDeDados.ExecutarScalar(comando);

                if (valor != null && !Convert.IsDBNull(valor))
                {
                    caracterizacao = Obter(Convert.ToInt32(valor), bancoDeDados, simplificado);
                }
            }

            return(caracterizacao);
        }
コード例 #19
0
        public ActionResult Criar(int id)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            UnidadeProducao caracterizacao = new UnidadeProducao();

            caracterizacao.Empreendimento.Id = id;

            if (!_validar.Acessar(caracterizacao.Empreendimento.Id))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, Msg = Validacao.QueryParam() }));
            }

            UnidadeProducaoVM vm = new UnidadeProducaoVM();

            vm.UnidadeProducao.Empreendimento = _caracterizacaoBus.ObterEmpreendimentoSimplificado(id);
            return(View(vm));
        }
コード例 #20
0
        public ActionResult Visualizar(int id)
        {
            if (!_caracterizacaoValidar.Basicas(id, isVisualizar: true))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            if (!_validar.Acessar(id))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, Msg = Validacao.QueryParam() }));
            }

            UnidadeProducao   caracterizacao = _bus.ObterPorEmpreendimento(id);
            UnidadeProducaoVM vm             = new UnidadeProducaoVM()
            {
                IsVisualizar = true
            };

            vm.UnidadeProducao = caracterizacao;
            vm.UrlRetorno      = Url.Action("", "Caracterizacao", new { id = caracterizacao.Empreendimento.Id });

            return(View(vm));
        }
コード例 #21
0
        internal UnidadeProducao Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            UnidadeProducao caracterizacao = new UnidadeProducao();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Unidade de Produção

                Comando comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.empreendimento, c.possui_cod_propriedade, c.propriedade_codigo, e.codigo empreendimento_codigo, c.local_livro 
				from {0}crt_unidade_producao c, tab_empreendimento e where c.empreendimento = e.id and c.id = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = id;
                        caracterizacao.CodigoPropriedade       = reader.GetValue <int>("propriedade_codigo");
                        caracterizacao.Empreendimento.Id       = reader.GetValue <int>("empreendimento");
                        caracterizacao.Empreendimento.Codigo   = reader.GetValue <int>("empreendimento_codigo");
                        caracterizacao.LocalLivroDisponivel    = reader.GetValue <string>("local_livro");
                        caracterizacao.PossuiCodigoPropriedade = reader.GetValue <bool>("possui_cod_propriedade");
                        caracterizacao.Tid = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion

                if (simplificado)
                {
                    return(caracterizacao);
                }

                #region Unidades de produção

                comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.unidade_producao, c.possui_cod_up, c.codigo_up, c.tipo_producao, c.renasem, c.renasem_data_validade, c.area, c.ano_abertura, 
				c.cultura, c.cultivar, tc.texto cultura_texto, cc.cultivar cultivar_nome, c.data_plantio_ano_producao, c.estimativa_quant_ano, c.estimativa_unid_medida 
				from crt_unidade_producao_unidade c, tab_cultura_cultivar cc, tab_cultura tc 
				where cc.id(+) = c.cultivar and tc.id = c.cultura and c.unidade_producao = :unidade_producao"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("unidade_producao", caracterizacao.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        caracterizacao.UnidadesProducao.Add(new UnidadeProducaoItem()
                        {
                            Id                              = reader.GetValue <int>("id"),
                            Tid                             = reader.GetValue <string>("tid"),
                            PossuiCodigoUP                  = reader.GetValue <bool>("possui_cod_up"),
                            CodigoUP                        = reader.GetValue <long>("codigo_up"),
                            TipoProducao                    = reader.GetValue <int>("tipo_producao"),
                            RenasemNumero                   = reader.GetValue <string>("renasem"),
                            DataValidadeRenasem             = string.IsNullOrEmpty(reader.GetValue <string>("renasem_data_validade")) ? "" : Convert.ToDateTime(reader.GetValue <string>("renasem_data_validade")).ToShortDateString(),
                            AreaHA                          = reader.GetValue <decimal>("area"),
                            DataPlantioAnoProducao          = reader.GetValue <string>("data_plantio_ano_producao"),
                            EstimativaProducaoQuantidadeAno = reader.GetValue <decimal>("estimativa_quant_ano"),
                            CultivarId                      = reader.GetValue <int>("cultivar"),
                            CultivarTexto                   = reader.GetValue <string>("cultivar_nome"),
                            CulturaId                       = reader.GetValue <int>("cultura"),
                            CulturaTexto                    = reader.GetValue <string>("cultura_texto"),
                            AnoAbertura                     = reader.GetValue <string>("ano_abertura")
                        });
                    }

                    reader.Close();
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    #region Coordenadas

                    comando = bancoDeDados.CriarComando(@"
					select id, tid, unidade_producao_unidade, tipo_coordenada, datum, easting_utm, northing_utm, fuso_utm,
					hemisferio_utm, municipio from crt_unidade_producao_un_coord where unidade_producao_unidade = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        Coordenada coordenada = null;

                        if (reader.Read())
                        {
                            coordenada                    = new Coordenada();
                            coordenada.Id                 = reader.GetValue <int>("id");
                            coordenada.Tipo.Id            = reader.GetValue <int>("tipo_coordenada");
                            coordenada.Datum.Id           = reader.GetValue <int>("datum");
                            coordenada.EastingUtmTexto    = reader.GetValue <string>("easting_utm");
                            coordenada.NorthingUtmTexto   = reader.GetValue <string>("northing_utm");
                            coordenada.FusoUtm            = reader.GetValue <int>("fuso_utm");
                            coordenada.HemisferioUtm      = reader.GetValue <int>("hemisferio_utm");
                            coordenada.HemisferioUtmTexto = reader.GetValue <string>("hemisferio_utm");

                            item.Municipio.Id = reader.GetValue <int>("municipio");
                            item.Coordenada   = coordenada;
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Produtores

                    comando = bancoDeDados.CriarComando(@"
					select c.id, c.tid, c.produtor, nvl(p.nome, p.razao_social) nome_razao, nvl(p.cpf, p.cnpj) cpf_cnpj, p.tipo 
					from crt_unidade_prod_un_produtor c, tab_pessoa p where p.id = c.produtor and c.unidade_producao_unidade = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            item.Produtores.Add(new Responsavel()
                            {
                                Id               = reader.GetValue <int>("produtor"),
                                NomeRazao        = reader.GetValue <string>("nome_razao"),
                                CpfCnpj          = reader.GetValue <string>("cpf_cnpj"),
                                IdRelacionamento = reader.GetValue <int>("id"),
                                Tipo             = reader.GetValue <int>("tipo"),
                                Tid              = reader.GetValue <string>("tid")
                            });
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Responsáveis Técnicos

                    comando = bancoDeDados.CriarComando(@"
					select c.id, c.tid, c.unidade_producao_unidade, c.responsavel_tecnico, nvl(p.nome, p.razao_social) nome_razao, nvl(p.cpf, p.cnpj) cpf_cnpj, 
					pf.texto profissao, oc.orgao_sigla, pp.registro, c.numero_hab_cfo_cfoc, c.numero_art, c.art_cargo_funcao, c.data_validade_art, 
					(select h.extensao_habilitacao from tab_hab_emi_cfo_cfoc h where h.responsavel = c.responsavel_tecnico) extensao_habilitacao 
					from {0}crt_unidade_prod_un_resp_tec c, {0}tab_credenciado tc, {1}tab_pessoa p, {1}tab_pessoa_profissao pp, {0}tab_profissao pf, {0}tab_orgao_classe oc 
					where tc.id = c.responsavel_tecnico and p.id = tc.pessoa and pp.pessoa(+) = p.id and pf.id(+)  = pp.profissao and oc.id(+) = pp.orgao_classe 
					and c.unidade_producao_unidade = :id"                    , EsquemaBanco, EsquemaCredenciadoBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        ResponsavelTecnico responsavel = null;

                        while (reader.Read())
                        {
                            responsavel = new ResponsavelTecnico();
                            responsavel.IdRelacionamento = reader.GetValue <int>("id");
                            responsavel.Id             = reader.GetValue <int>("responsavel_tecnico");
                            responsavel.NomeRazao      = reader.GetValue <string>("nome_razao");
                            responsavel.CpfCnpj        = reader.GetValue <string>("cpf_cnpj");
                            responsavel.CFONumero      = reader.GetValue <string>("numero_hab_cfo_cfoc");
                            responsavel.ArtCargoFuncao = reader.GetValue <bool>("art_cargo_funcao");
                            responsavel.NumeroArt      = reader.GetValue <string>("numero_art");

                            responsavel.ProfissaoTexto   = reader.GetValue <string>("profissao");
                            responsavel.OrgaoClasseSigla = reader.GetValue <string>("orgao_sigla");
                            responsavel.NumeroRegistro   = reader.GetValue <string>("registro");

                            responsavel.DataValidadeART = reader.GetValue <string>("data_validade_art");
                            if (!string.IsNullOrEmpty(responsavel.DataValidadeART))
                            {
                                responsavel.DataValidadeART = Convert.ToDateTime(responsavel.DataValidadeART).ToShortDateString();
                            }

                            if (Convert.ToBoolean(reader.GetValue <int>("extensao_habilitacao")))
                            {
                                responsavel.CFONumero += "-ES";
                            }

                            item.ResponsaveisTecnicos.Add(responsavel);
                        }

                        reader.Close();
                    }

                    #endregion
                }

                #endregion
            }

            return(caracterizacao);
        }
コード例 #22
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);
            }
        }
コード例 #23
0
        public bool Salvar(UnidadeProducao caracterizacao)
        {
            try
            {
                if (!_validar.Salvar(caracterizacao))
                {
                    return(Validacao.EhValido);
                }

                #region Configurar Salvar

                Municipio municipio = _da.ObterMunicipioPropriedade(caracterizacao.Empreendimento.Id);

                if (!caracterizacao.PossuiCodigoPropriedade)
                {
                    if (caracterizacao.Id < 1)
                    {
                        int sequencial = _da.ObterSequenciaCodigoPropriedade();

                        caracterizacao.CodigoPropriedade = UnidadeProducaoGenerator.GerarCodigoPropriedade(municipio.Ibge, sequencial);
                    }
                    else
                    {
                        caracterizacao.CodigoPropriedade = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id, true).CodigoPropriedade;
                    }
                }

                RequestJson requestJson                        = new RequestJson();
                ResponseJsonData <dynamic> resposta            = new ResponseJsonData <dynamic>();
                UnidadeProducao            caracterizacaoBanco = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id);

                int ultimoCodigoUP = _da.ObterUltimoCodigoUP(caracterizacao.Empreendimento.Id);
                foreach (long item in caracterizacao.UnidadesProducao.Where(x => x.PossuiCodigoUP).Select(x => x.CodigoUP))
                {
                    int aux = Convert.ToInt32(item.ToString().Substring(14));
                    if (aux > ultimoCodigoUP)
                    {
                        ultimoCodigoUP = aux;
                    }
                }

                foreach (UnidadeProducaoItem item in caracterizacao.UnidadesProducao)
                {
                    int codigoIbge = 0;
                    resposta = requestJson.Executar <dynamic>(_configCoord.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + item.Coordenada.EastingUtm + "&northing=" + item.Coordenada.NorthingUtm);

                    if (resposta.Erros != null && resposta.Erros.Count > 0)
                    {
                        Validacao.Erros.AddRange(resposta.Erros);
                        return(Validacao.EhValido);
                    }

                    if (resposta.Data == null)
                    {
                        throw new Exception(Mensagem.Empreendimento.ErroConexaoMunicipioGeobases.ToString());
                    }

                    var objJson = resposta.Data;
                    if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                    {
                        Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                    }

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

                    if (objJson["Municipio"] != null)
                    {
                        codigoIbge = Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0);
                    }

                    ListaValoresDa listaValoresDa = new ListaValoresDa();
                    item.Municipio = listaValoresDa.ObterMunicipio(codigoIbge);

                    if (!item.PossuiCodigoUP)
                    {
                        item.AnoAbertura = DateTime.Today.Year.ToString().Substring(2);

                        if (item.Id < 1)
                        {
                            ultimoCodigoUP++;

                            item.CodigoUP = UnidadeProducaoGenerator.GerarCodigoUnidadeProducao(
                                item.Municipio.Ibge
                                , caracterizacao.CodigoPropriedade
                                , item.AnoAbertura
                                , ultimoCodigoUP
                                );
                        }
                        else
                        {
                            item.CodigoUP = caracterizacaoBanco.UnidadesProducao.Single(x => x.Id == item.Id).CodigoUP;
                        }
                    }
                    else
                    {
                        item.AnoAbertura = item.CodigoUP.ToString().Substring(11, 2);
                    }

                    foreach (var aux in item.ResponsaveisTecnicos)
                    {
                        aux.CFONumero = aux.CFONumero.Split('-').GetValue(0).ToString();
                    }
                }

                #endregion

                if (caracterizacao.UnidadesProducao.Any(x => caracterizacao.UnidadesProducao.Count(y => y.CodigoUP == x.CodigoUP) > 1))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoItemIncorreto);
                    return(false);
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    if (!UnidadeProducaoGenerator.CodigoUpHasCodigoPropriedade(caracterizacao.CodigoPropriedade, item.CodigoUP))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                        return(false);
                    }
                }

                GerenciadorTransacao.ObterIDAtual();

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

                    _da.Salvar(caracterizacao, bancoDeDados);

                    Validacao.Add(Mensagem.UnidadeProducao.SalvoSucesso);

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

            return(Validacao.EhValido);
        }
コード例 #24
0
 public UnidadeProducaoVM()
 {
     UnidadeProducao = new UnidadeProducao();
 }
コード例 #25
0
 public UnidadeProducaoVM(UnidadeProducao unidade)
 {
     this.UnidadeProducao = unidade;
 }