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);
            }
        }
Example #2
0
        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);
            }
        }