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 (_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 somaQuantidadeCFOC = _da.ObterCapacidadeMes(cfoc, empreendimento, item.CultivarId); var somaQuantidade = lista.Where(x => !x.Equals(item) && x.CultivarId == item.CultivarId).Sum(x => x.Quantidade); if (cultivar.CapacidadeMes < somaQuantidadeCFOC + item.Quantidade + somaQuantidade) { Validacao.Add(Mensagem.EmissaoCFOC.QuantidadeMensalInvalida); 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 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); } }