public void ValidarProduto(int cfoc, int empreendimento, IdentificacaoProduto item, List <IdentificacaoProduto> lista = null) { lista = lista ?? new List <IdentificacaoProduto>(); if (item.LoteId <= 0) { Validacao.Add(Mensagem.EmissaoCFOC.LoteObrigatorio); return; } //if (lista != null && lista.Count > 0 && !lista.Any(x => x.Quantidade == item.Quantidade && x.UnidadeMedida == item.UnidadeMedida && x.LoteCodigo == item.LoteCodigo)) //{ // Validacao.Add(Mensagem.EmissaoCFOC.ProdutoUnico); //} if (item.Quantidade <= 0) { Validacao.Add(Mensagem.EmissaoCFOC.QtdProdutoObrigatorio); return; } if (_da.LotePossuiOrigemCancelada(item.LoteId)) { Validacao.Add(Mensagem.EmissaoCFOC.LotePossuiOrigemCancelada); return; } //string aux = _da.LoteUtilizado(item.LoteId, cfoc); //if (!string.IsNullOrEmpty(aux)) //{ // Validacao.Add(Mensagem.EmissaoCFOC.LoteUtilizado(item.LoteCodigo, aux)); // return; //} TituloInternoBus tituloBus = new TituloInternoBus(); if (!tituloBus.UnidadeConsolidacaoPossuiAberturaConcluido(empreendimento, item.CulturaId)) { Validacao.Add(Mensagem.EmissaoCFOC.UCTituloConcluido); } Cultivar cultivar = _da.CultivarAssociadaUC(empreendimento, item.CultivarId); if (cultivar != null && cultivar.Id <= 0) { Validacao.Add(Mensagem.EmissaoCFOC.CultivarAssociadoEmpreendimento(item.CultivarTexto)); return; } var somaQuantidadeRemanescente = _da.ObterSaldoRemanescente(item.LoteId, empreendimento); //var somaQuantidade = lista.Where(x => !x.Equals(item) && x.CultivarId == item.CultivarId).Sum(x => x.Quantidade); if (somaQuantidadeRemanescente < (item.ExibeQtdKg ? item.Quantidade / 1000 : item.Quantidade)) { Validacao.Add(Mensagem.EmissaoCFOC.LoteSaldoInsuficiente); return; } if (lista.Count(x => !x.Equals(item)) >= 5) { Validacao.Add(Mensagem.EmissaoCFOC.LimiteMaximo); } if (lista.Any(x => x.LoteId == item.LoteId)) { Validacao.Add(Mensagem.EmissaoCFOC.LoteJaAdicionado); } }
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); } }