public ActionResult EntradaConferenciaGarantia(long id)
        {
            var garantia   = _uow.GarantiaRepository.GetById(id);
            var notafiscal = _uow.NotaFiscalRepository.GetById(garantia.IdNotaFiscal);

            //Valida o Garantia.
            if (garantia == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Garantia não encontrado. Por favor, tente novamente!"));
            }


            //Captura o Usuário que está iniciando a conferência.
            var usuario = _uow.PerfilUsuarioRepository.GetByUserId(User.Identity.GetUserId());

            var empresaConfig = _uow.EmpresaConfigRepository.ConsultarPorIdEmpresa(IdEmpresa);

            if (empresaConfig == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "As configurações da empresa não foram encontradas. Por favor, tente novamente!"));
            }

            var model = new GarantiaEntradaConferenciaViewModel
            {
                IdNotaFiscal       = garantia.NotaFiscal.IdNotaFiscal,
                IdGarantia         = garantia.IdGarantia,
                NumeroNotaFiscal   = string.Concat(garantia.NotaFiscal.Numero, " - ", garantia.NotaFiscal.Serie),
                IdUuarioConferente = usuario.UsuarioId,
                NomeConferente     = usuario.Nome,
                DataDaSolicitacao  = garantia.DataRecebimento.ToString("dd/MM/yyyy"),
                Cliente            = notafiscal.Cliente.RazaoSocial,
                Fornecedor         = string.Concat(notafiscal.Fornecedor.IdFornecedor, " - ", notafiscal.Fornecedor.NomeFantasia),
                Representante      = notafiscal.Cliente.RepresentanteExterno.Nome ?? notafiscal.Cliente.RepresentanteInterno.Nome
                                     //Cliente = garantia
                                     //DataHoraRecebimento = lote.DataRecebimento.ToString("dd/MM/yyyy HH:mm"),
                                     //NomeFornecedor = lote.NotaFiscal.Fornecedor.NomeFantasia,
                                     //QuantidadeVolume = lote.QuantidadeVolume,
                                     //TipoConferencia = empresaConfig.TipoConferencia.Descricao,
                                     //IdTipoConferencia = empresaConfig.TipoConferencia.IdTipoConferencia.GetHashCode()
            };

            if (!garantia.DataInicioConferencia.HasValue)
            {
                garantia.DataInicioConferencia = DateTime.Now;
                _uow.SaveChanges();
            }

            ////Se o tipo da conferência for, o usuário não poderá informar a quantidade por caixa e quantidade de caixa.
            ////Sabendo disso, atribui 1 para os campos.
            //if (empresaConfig.TipoConferencia.IdTipoConferencia == TipoConferenciaEnum.ConferenciaCemPorcento)
            //{
            //    model.QuantidadePorCaixa = 1;
            //    model.QuantidadeCaixa = 1;
            //}

            return(View(model));
        }
        public async Task <ActionResult> ObterDadosReferenciaConferenciaGarantia(string codigoBarrasOuReferencia, long idGarantia, long idNotaFiscal)
        {
            //Validações do produto.
            var conferencia = _conferenciaService.ValidarProdutoGarantia(idGarantia, idNotaFiscal, codigoBarrasOuReferencia, IdEmpresa);

            if (!conferencia.Sucesso)
            {
                return(Json(new AjaxGenericResultModel
                {
                    Success = conferencia.Sucesso,
                    Message = conferencia.Mensagem
                }));
            }

            //Captura as quantidade conferida e não conferida do lote.
            int quantidadeConferida    = 0;
            int quantidadeNaoConferida = 0;

            //_conferenciaService.ConsultarQuantidadeConferidaENaoConferidaGarantia(conferencia.Garantia, conferencia.Produto, ref quantidadeConferida, ref quantidadeNaoConferida);

            //Captura o Usuário que está iniciando a conferência novamente.
            var usuario = _uow.PerfilUsuarioRepository.GetByUserId(User.Identity.GetUserId());

            var model = new GarantiaEntradaConferenciaViewModel
            {
                Descricao  = conferencia.Produto.Descricao,
                Fabricante = conferencia.Produto.NomeFabricante,
                Unidade    = conferencia.Produto.UnidadeMedida.Sigla

                             //IdNotaFiscal = conferencia.Lote.NotaFiscal.IdNotaFiscal,
                             //IdLote = conferencia.Lote.IdLote,
                             //NumeroNotaFiscal = string.Concat(conferencia.Lote.NotaFiscal.Numero, " - ", conferencia.Lote.NotaFiscal.Serie),
                             //IdUuarioConferente = usuario.UsuarioId,
                             //NomeConferente = usuario.Nome,
                             //DataHoraRecebimento = conferencia.Lote.DataRecebimento.ToString("dd/MM/yyyy HH:mm"),
                             //NomeFornecedor = conferencia.Lote.NotaFiscal.Fornecedor.NomeFantasia,
                             //QuantidadeVolume = conferencia.Lote.QuantidadeVolume,
                             //TipoConferencia = conferencia.EmpresaConfig.TipoConferencia.Descricao,
                             //IdTipoConferencia = conferencia.EmpresaConfig.TipoConferencia.IdTipoConferencia.GetHashCode(),
                             //Referencia = conferencia.Produto.Referencia,
                             //DescricaoReferencia = conferencia.Produto.Descricao,
                             //Embalagem = conferencia.Produto.MultiploVenda.ToString("N2"),
                             //Unidade = conferencia.Produto.UnidadeMedida.Sigla,
                             //QuantidadeEstoque = conferencia.ProdutoEstoque == null ? 0 : conferencia.ProdutoEstoque.Saldo,
                             //QuantidadeNaoConferida = quantidadeNaoConferida,
                             //QuantidadeConferida = quantidadeConferida,
                             //InicioConferencia = DateTime.Now.ToString(),
                             //QuantidadePorCaixa = null,
                             //Multiplo = conferencia.Produto.MultiploVenda,
                             //QuantidadeReservada = await _produtoService.ConsultarQuantidadeReservada(conferencia.Produto.IdProduto, IdEmpresa),
                             //MediaVenda = conferencia.ProdutoEstoque.MediaVenda.HasValue ? conferencia.ProdutoEstoque.MediaVenda.Value.ToString("N2") : string.Empty,
                             //QuantidadeCaixa = conferencia.EmpresaConfig.IdTipoConferencia == TipoConferenciaEnum.ConferenciaCemPorcento ? 1 : null as int?
            };

            string json = JsonConvert.SerializeObject(model);

            return(Json(new AjaxGenericResultModel
            {
                Success = true,
                Message = conferencia.Mensagem,
                Data = json
            }));
        }