public bool Cancelar(EmissaoCFOC entidade) { GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado)) { bancoDeDados.IniciarTransacao(); EmissaoCFOC entidadeBanco = _da.ObterPorNumero(Convert.ToInt64(entidade.Numero), false, false, bancoDeDados); List <int> lotesID = entidadeBanco.Produtos.Select(x => x.LoteId).ToList(); //Dessassocio os Lotes entidadeBanco.Produtos.Clear(); _da.Salvar(entidadeBanco, bancoDeDados); LoteBus loteBus = new LoteBus(); foreach (var item in lotesID) { loteBus.AlterarSituacaoLote(item, eLoteSituacao.NaoUtilizado, bancoDeDados); } _da.Cancelar(entidadeBanco, bancoDeDados); if (!Validacao.EhValido) { bancoDeDados.Rollback(); return(false); } bancoDeDados.Commit(); } return(Validacao.EhValido); }
public bool Cancelar(EmissaoCFOC entidade) { GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado)) { bancoDeDados.IniciarTransacao(); EmissaoCFOC entidadeBanco = _da.ObterPorNumero(Convert.ToInt64(entidade.Numero), entidade.Serie, false, false, bancoDeDados); if (!String.IsNullOrWhiteSpace(entidadeBanco.Numero)) { string numtemp = entidadeBanco.Numero; if (numtemp.Count() > 8) { entidadeBanco.Numero = numtemp.Substring(0, 8); entidadeBanco.Serie = numtemp[9].ToString(); } if (entidade.Id != 0) { List <int> lotesID = entidadeBanco.Produtos.Select(x => x.LoteId).ToList(); //Dessassocio os Lotes entidadeBanco.Produtos.Clear(); _da.Salvar(entidadeBanco, bancoDeDados); LoteBus loteBus = new LoteBus(); foreach (var item in lotesID) { loteBus.AlterarSituacaoLote(item, eLoteSituacao.NaoUtilizado, bancoDeDados); } } _da.Cancelar(entidadeBanco, bancoDeDados); } if (!Validacao.EhValido) { bancoDeDados.Rollback(); return(false); } bancoDeDados.Commit(); } return(Validacao.EhValido); }
internal bool PTVCancelar(PTVOutro ptv) { PTVOutro ptvBanco = _da.Obter(ptv.Id, true); if (ptvBanco.Situacao != (int)ePTVOutroSituacao.Valido) { Validacao.Add(Mensagem.PTVOutro.CancelarSituacaoInvalida); } LoteBus loteBus = new LoteBus(); if (loteBus.VerificarSeDocumentoJaAssociadaALote(ptv.Id, eDocumentoFitossanitarioTipo.PTVOutroEstado)) { Validacao.Add(Mensagem.PTVOutro.CancelarAssociadoALote); } return(Validacao.EhValido); }
public bool Ativar(EmissaoCFOC entidade) { try { EmissaoCFOC entidadeBanco = Obter(entidade.Id); entidadeBanco.DataAtivacao = entidade.DataAtivacao; if (!_validar.Ativar(entidadeBanco)) { return(false); } GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado)) { bancoDeDados.IniciarTransacao(); LoteBus loteBus = new LoteBus(); foreach (var item in entidadeBanco.Produtos) { loteBus.AlterarSituacaoLote(item.LoteId, eLoteSituacao.Utilizado, bancoDeDados); } _da.Ativar(entidadeBanco, bancoDeDados); if (!Validacao.EhValido) { bancoDeDados.Rollback(); return(false); } Validacao.Add(Mensagem.EmissaoCFOC.AtivadoSucesso(entidade.Numero)); bancoDeDados.Commit(); } } catch (Exception exc) { Validacao.AddErro(exc); } return(Validacao.EhValido); }
public ActionResult LoteVisualizar(int id) { LoteBus loteBus = new LoteBus(); Lote lote = loteBus.Obter(id); List <Lista> origemTipo = ListaCredenciadoBus.DocumentosFitossanitario.Where(x => x.Id == ((int)eDocumentoFitossanitarioTipo.CFO).ToString() || x.Id == ((int)eDocumentoFitossanitarioTipo.CFOC).ToString()).ToList(); LoteVM vm = new LoteVM(loteBus.ObterEmpreendimentosResponsaveis(), origemTipo, lote); vm.IsVisualizar = true; if (Request.IsAjaxRequest()) { return(PartialView("LotePartial", vm)); } else { return(View(vm)); } }
public bool ValidarProduto(PTVProduto item, DateTecno ptvData, List <PTVProduto> lista, int ptvID) { lista = lista ?? new List <PTVProduto>(); if (item.OrigemTipo <= 0) { Validacao.Add(Mensagem.PTV.TipoOrigemObrigatorio); } if (item.Origem <= 0 && string.IsNullOrEmpty(item.OrigemNumero)) { Validacao.Add(Mensagem.PTV.OrigemObrigatorio); } var loteBus = new LoteBus(); if (item.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO && loteBus.VerificarSeCfoJaAssociadaALote(item.Origem)) { Validacao.Add(Mensagem.EmissaoCFO.DocumentoOrigemDeveSerDeMesmaUC); return(false); } #region Saldo //TODO decimal saldo = 0; int produtorItem = 0; switch ((eDocumentoFitossanitarioTipo)item.OrigemTipo) { case eDocumentoFitossanitarioTipo.CFO: EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus(); EmissaoCFO cfo = emissaoCFOBus.Obter(item.Origem); saldo = cfo.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade); produtorItem = cfo.ProdutorId; if (cfo.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido) { Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto)); } DateTime dataVencimentoCFO = cfo.DataEmissao.Data.GetValueOrDefault().AddDays(cfo.ValidadeCertificado); if (dataVencimentoCFO < DateTime.Today) { Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto)); } if (cfo.DataEmissao.Data > ptvData.Data) { Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData); } break; case eDocumentoFitossanitarioTipo.CFOC: EmissaoCFOCBus emissaoCFOCBus = new EmissaoCFOCBus(); EmissaoCFOC cfoc = emissaoCFOCBus.Obter(item.Origem); saldo = cfoc.Produtos.Where(x => x.CultivarId == item.Cultivar && x.UnidadeMedidaId == item.UnidadeMedida).Sum(x => x.Quantidade); if (cfoc.SituacaoId != (int)eDocumentoFitossanitarioSituacao.Valido) { Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto)); } DateTime dataVencimentoCFOC = cfoc.DataEmissao.Data.GetValueOrDefault().AddDays(cfoc.ValidadeCertificado); if (dataVencimentoCFOC < DateTime.Today) { Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto)); } if (cfoc.DataEmissao.Data > ptvData.Data) { Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData); } break; case eDocumentoFitossanitarioTipo.PTVOutroEstado: PTVOutroBus ptvOutroBus = new PTVOutroBus(); PTVOutro ptvOutro = ptvOutroBus.Obter(item.Origem); saldo = ptvOutro.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade); if (ptvOutro.Situacao != (int)ePTVOutroSituacao.Valido) { Validacao.Add(Mensagem.PTV.OrigemSituacaoInvalida(item.OrigemTipoTexto)); } if (ptvOutro.ValidoAte.Data.GetValueOrDefault() < DateTime.Today) { Validacao.Add(Mensagem.Lote.OrigemVencida(item.OrigemTipoTexto)); } if (ptvOutro.DataEmissao.Data > ptvData.Data) { Validacao.Add(Mensagem.Lote.OrigemDataMaiorLoteData); } break; case eDocumentoFitossanitarioTipo.PTV: PTVInternoBus ptvBus = new PTVInternoBus(); PTV ptv = ptvBus.Obter(item.Origem); saldo = ptv.Produtos.Where(x => x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida).Sum(x => x.Quantidade); produtorItem = ptv.ResponsavelEmpreendimento; break; } #endregion Saldo if (lista.Count > 0 && produtorItem > 0) { int produtorOrigem = 0; PTVProduto primeiroItem = lista.FirstOrDefault(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO || x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.PTV); if (primeiroItem != null) { switch ((eDocumentoFitossanitarioTipo)primeiroItem.OrigemTipo) { case eDocumentoFitossanitarioTipo.CFO: EmissaoCFOBus emissaoCFOBus = new EmissaoCFOBus(); EmissaoCFO cfo = emissaoCFOBus.Obter(primeiroItem.Origem, true); produtorOrigem = cfo.ProdutorId; break; case eDocumentoFitossanitarioTipo.PTV: PTVInternoBus ptvBus = new PTVInternoBus(); PTV ptv = ptvBus.Obter(primeiroItem.Origem, true); produtorOrigem = ptv.ResponsavelEmpreendimento; break; } if (produtorItem != produtorOrigem) { Validacao.Add(Mensagem.PTV.ProdutorDiferente); } } } if (!Validacao.EhValido) { return(false); } if (item.Cultura <= 0) { Validacao.Add(Mensagem.PTV.CulturaObrigatorio); } if (item.Cultivar <= 0) { Validacao.Add(Mensagem.PTV.CultivarObrigatorio); } if (item.UnidadeMedida <= 0) { Validacao.Add(Mensagem.PTV.UnidadeMedidaObrigatorio); } if (item.Quantidade <= 0) { Validacao.Add(Mensagem.PTV.QuantidadeObrigatorio); } if (lista.Count(x => !x.Equals(item)) >= 5) { Validacao.Add(Mensagem.PTV.QauntidadeItensUltrapassado); } if (Validacao.EhValido && lista.Count > 0) { if (lista.Count(x => x.Origem == item.Origem && item.Cultivar == x.Cultivar && x.UnidadeMedida == item.UnidadeMedida && !x.Equals(item)) > 0) { Validacao.Add(Mensagem.PTV.ITemProdutoJaAdicionado(item.OrigemTipoTexto)); } if (lista.Count(x => x.EmpreendimentoId != item.EmpreendimentoId && x.EmpreendimentoId > 0) > 0) { Validacao.Add(Mensagem.PTV.EmpreendimentoOrigemDiferente); } } if (Validacao.EhValido) { if (_da.EmpreendimentoPossuiEPTVBloqueado(item.EmpreendimentoId)) { Validacao.Add(Mensagem.PTV.EmpreendimentoEPTVBloqueado); } } if (Validacao.EhValido) { if (item.OrigemTipo != (int)eDocumentoFitossanitarioTipo.CFCFR && item.OrigemTipo != (int)eDocumentoFitossanitarioTipo.TF) { decimal saldoOutrosDoc = _da.ObterOrigemQuantidade((eDocumentoFitossanitarioTipo)item.OrigemTipo, item.Origem, item.OrigemNumero, item.Cultivar, item.UnidadeMedida, ptvData.Data.GetValueOrDefault().Year, ptvID); decimal quantidadeAdicionada = lista.Where(x => x.OrigemTipo == item.OrigemTipo && x.Origem == item.Origem && x.Cultivar == item.Cultivar && x.UnidadeMedida == item.UnidadeMedida && !x.Equals(item)).Sum(x => x.Quantidade); if ((saldoOutrosDoc + quantidadeAdicionada + item.Quantidade) > saldo) { Validacao.Add(Mensagem.PTV.SomaQuantidadeInvalida); } } } return(Validacao.EhValido); }