public JsonResult ValidarChaveAcessoIgualDaNFe(DetalhesQuarentenaViewModel model) { bool chaveNfeIgual = false; //bool existe = _uow.QuarentenaRepository.Any(x => x.Lote.NotaFiscal.ChaveAcesso == chaveAcesso); Quarentena quarentena = _uow.QuarentenaRepository.GetById(model.IdQuarentena); Lote lote = _uow.LoteRepository.GetById(quarentena.IdLote); if (lote.IdLoteStatus.GetHashCode() == 12) { //Valida chave de cesso var chaveValida = false; if (string.IsNullOrWhiteSpace(model.ChaveAcesso)) { return(Json(new AjaxGenericResultModel { Success = false, Message = "Informe a chave de acesso da NF-e.", })); } if (model.ChaveAcesso.Length != 44) { return(Json(new AjaxGenericResultModel { Success = false, Message = "Chave de acesso não possui 44 digitos.", })); } if (lote.NotaFiscal.ChaveAcesso == model.ChaveAcesso) { chaveNfeIgual = true; } else { chaveNfeIgual = false; } if (!chaveNfeIgual) { return(Json(new AjaxGenericResultModel { Success = false, Message = "A chave de acesso informada não confere com a chave Nota Fiscal." })); } } return(Json(new AjaxGenericResultModel { Success = true })); }
public ActionResult DetalhesQuarentena(long id) { setViewBags(); var entidade = _uow.QuarentenaRepository.GetById(id); var model = new DetalhesQuarentenaViewModel { NotaSerie = entidade.Lote.NotaFiscal.Numero + " - " + entidade.Lote.NotaFiscal.Serie, Lote = entidade.IdLote.ToString(), LoteStatus = entidade.Lote.LoteStatus.Descricao, IdQuarentena = entidade.IdQuarentena, IdStatus = entidade.QuarentenaStatus.IdQuarentenaStatus, DataAbertura = entidade.DataAbertura.ToString("dd/MM/yyyy"), DataEncerramento = entidade.DataEncerramento.HasValue ? entidade.DataEncerramento.Value.ToString("dd/MM/yyyy") : string.Empty, Observacao = entidade.Observacao, }; model.ObservacaoDivergencia = entidade.Lote.ObservacaoDivergencia; List <LoteDivergencia> loteDivergencias = _uow.LoteDivergenciaRepository.Todos().Where(x => x.IdLote == entidade.IdLote).ToList(); foreach (LoteDivergencia divergencia in loteDivergencias) { NotaFiscalItem nfItem = divergencia.NotaFiscal.NotaFiscalItens.Where(w => w.Produto.IdProduto == divergencia.Produto.IdProduto).FirstOrDefault(); var divergenciaItem = new DivergenciaItemViewModel { Descricao = divergencia.Produto.Descricao, Referencia = divergencia.Produto.Referencia, QuantidadeDevolucao = divergencia.QuantidadeDevolucao, QuantidadeConferencia = divergencia.QuantidadeConferencia, QuantidadeMais = divergencia.QuantidadeConferenciaMais.GetValueOrDefault(), QuantidadeMenos = divergencia.QuantidadeConferenciaMenos.GetValueOrDefault(), QuantidadeNotaFiscal = nfItem?.Quantidade ?? 0, QuantidadeMaisTratado = divergencia.QuantidadeDivergenciaMais.GetValueOrDefault(), QuantidadeMenosTratado = divergencia.QuantidadeDivergenciaMenos.GetValueOrDefault() }; model.Divergencias.Add(divergenciaItem); } return(View(model)); }
public JsonResult DetalhesQuarentena(DetalhesQuarentenaViewModel model) { ValidateModel(model); string mensagemErro = null; if (model.IdStatus == QuarentenaStatusEnum.Retirado) { if (string.IsNullOrEmpty(model.CodigoConfirmacao)) { ModelState.AddModelError(nameof(model.CodigoConfirmacao), (mensagemErro = "O código de confirmação é obrigatório para retirar a mercadoria.")); } else { bool existeCod = _uow.QuarentenaRepository.Any(x => x.IdQuarentena == model.IdQuarentena && x.CodigoConfirmacao == model.CodigoConfirmacao); if (!existeCod) { ModelState.AddModelError(nameof(model.CodigoConfirmacao), (mensagemErro = "O código de confirmação está incorreto!")); } } } //Valida a model. if (!ModelState.IsValid) { return(Json(new AjaxGenericResultModel { Success = false, Message = mensagemErro ?? Resources.CommonStrings.RegisterEditedErrorMessage })); } try { //Captura os dados para atualiza-los posteriormente. Quarentena entidade = _uow.QuarentenaRepository.GetById(model.IdQuarentena); //Captura os dados "antigo" para o log. Quarentena old = new Quarentena { DataAbertura = entidade.DataAbertura, DataEncerramento = entidade.DataEncerramento, IdLote = entidade.IdLote, IdQuarentena = entidade.IdQuarentena, IdQuarentenaStatus = entidade.IdQuarentenaStatus, CodigoConfirmacao = entidade.CodigoConfirmacao, Observacao = entidade.Observacao }; //Verifica se o status anterior era Encaminhado para Auditoria e o atual Aberto. //Caso seja, informa o usuário que a ação não é permitida. if (old.IdQuarentenaStatus == QuarentenaStatusEnum.EncaminhadoAuditoria && (model.IdStatus == QuarentenaStatusEnum.Aberto || model.IdStatus == QuarentenaStatusEnum.Retirado)) { ModelState.AddModelError(nameof(model.IdStatus), (mensagemErro = "A quarentena foi encaminhada para Auditoria. Não é permitido atualizar o status para " + model.IdStatus.ToString() + ".")); return(Json(new AjaxGenericResultModel { Success = false, Message = mensagemErro ?? Resources.CommonStrings.RegisterEditedErrorMessage })); } //Atualiza o status e observação da quarentena. entidade.IdQuarentenaStatus = model.IdStatus; entidade.Observacao = model.Observacao; //Verifica se o status é Retirado ou Finalizado. //Caso seja, insere a data de encerramento pois, considera-se que a mercadoria foi retirada ou alguma outra ação feita (finalizado). if (model.IdStatus == QuarentenaStatusEnum.Retirado || model.IdStatus == QuarentenaStatusEnum.Finalizado) { entidade.DataEncerramento = DateTime.Now; } _uow.QuarentenaRepository.Update(entidade, IdUsuario); var userInfo = new BackOfficeUserInfo(); return(Json(new AjaxGenericResultModel { Success = true, Message = Resources.CommonStrings.RegisterEditedSuccessMessage })); } catch (Exception ex) { _log.Error(ex.Message, ex); return(Json(new AjaxGenericResultModel { Success = false, Message = Resources.CommonStrings.RegisterEditedErrorMessage })); } }