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 IdentificacaoProduto IdentificarProduto(string arquivoNome) { IdentificacaoProduto produto = new IdentificacaoProduto(); this.ArquivoNome = arquivoNome; Byte[] dados = this.ToBytes(); produto.nomeProduto = Encoding.ASCII.GetString(dados, 1024, 20).Replace("\0", String.Empty); produto.versao = new Version(dados[1044], dados[1045], dados[1046]); produto.caminhoArquivo = arquivoNome; return(produto); }
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 ActionResult ValidarIdentificacaoProduto(int cfo, int empreendimento, IdentificacaoProduto item, List <IdentificacaoProduto> lista) { _validar.ValidarProduto(cfo, empreendimento, item, lista); return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros })); }
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); } }
public List <IdentificacaoProduto> OrigemNumero(string numero, int origemTipo, string serieNumeral, out int origemID) { if (origemTipo == 0) { Validacao.Add(Mensagem.Lote.OrigemObrigatorio); } if (string.IsNullOrEmpty(numero) && !IsEditar) { Validacao.Add(Mensagem.Lote.OrigemNumeroObrigatorio(string.Empty)); } else { switch ((eDocumentoFitossanitarioTipo)origemTipo) { case eDocumentoFitossanitarioTipo.CFO: EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus(); EmissaoCFO CFO = emissaoCFOBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false, serieNumero: serieNumeral); if (CFO.Id > 0) { origemID = CFO.Id; return(CFO.Produtos); } Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente(eDocumentoFitossanitarioTipo.CFO.ToString())); break; case eDocumentoFitossanitarioTipo.CFOC: EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus(); EmissaoCFOC CFOC = emissaoCFOCBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false, serieNumero: serieNumeral); if (CFOC.Id > 0) { origemID = CFOC.Id; return(CFOC.Produtos); } Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente(eDocumentoFitossanitarioTipo.CFOC.ToString())); break; case eDocumentoFitossanitarioTipo.PTVOutroEstado: PTVOutroBus ptvOutroBus = new PTVOutroBus(); PTVOutro ptvOutro = ptvOutroBus.ObterPorNumero(Convert.ToInt64(numero), credenciado: false); if (ptvOutro.Id > 0) { origemID = ptvOutro.Id; List <IdentificacaoProduto> lista = new List <IdentificacaoProduto>(); foreach (var item in ptvOutro.Produtos) { IdentificacaoProduto itemLista = new IdentificacaoProduto(); itemLista.CulturaId = item.Cultura; itemLista.CulturaTexto = item.CulturaTexto; itemLista.CultivarId = item.Cultivar; itemLista.CultivarTexto = item.CultivarTexto; itemLista.UnidadeMedidaId = item.UnidadeMedida; itemLista.Quantidade = item.Quantidade; lista.Add(itemLista); } return(lista); } Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente("PTV de outro estado")); break; case eDocumentoFitossanitarioTipo.PTV: PTVInternoBus ptvBus = new PTVInternoBus(); PTV ptv = ptvBus.ObterPorNumero(Convert.ToInt64(numero)); if (ptv.Id > 0) { origemID = ptv.Id; List <IdentificacaoProduto> lista = new List <IdentificacaoProduto>(); foreach (var item in ptv.Produtos) { IdentificacaoProduto itemLista = new IdentificacaoProduto(); itemLista.CulturaId = item.Cultura; itemLista.CulturaTexto = item.CulturaTexto; itemLista.CultivarId = item.Cultivar; itemLista.CultivarTexto = item.CultivarTexto; itemLista.UnidadeMedidaId = item.UnidadeMedida; itemLista.Quantidade = item.Quantidade; lista.Add(itemLista); } return(lista); } Validacao.Add(Mensagem.Lote.OrigemNumeroInexistente("PTV")); break; } } origemID = 0; return(null); }