Exemplo n.º 1
0
        public JsonResult LoteImprimir(LoteEtiquetaViewModel viewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Não foi possível solicitar impressão."
                    }));
                }

                //Instância a lote produto.
                var loteProduto = _unitOfWork.LoteProdutoRepository.PesquisarProdutoNoLote(IdEmpresa, viewModel.NroLote.Value, viewModel.IdProduto);

                if (loteProduto == null)
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Não foi possível consultar o saldo do lote. Por favor, tente nvoamente!"
                    }));
                }

                var quantidadeTotalProduto = viewModel.QtdCaixas * viewModel.QtdPorCaixa;

                //Verifica se o saldo do produto no lote é menor que a quantidade informada.
                if (loteProduto.Saldo < quantidadeTotalProduto)
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "O saldo do produto no lote é menor que a quantidade informada. Por favor, tente novamente!"
                    }));
                }

                var produto = _unitOfWork.ProdutoRepository.GetById(viewModel.IdProduto);

                var request = new ImprimirEtiquetaArmazenagemVolume
                {
                    NroLote             = viewModel.NroLote.GetValueOrDefault(),
                    QuantidadeEtiquetas = viewModel.QtdCaixas.GetValueOrDefault(),
                    QuantidadePorCaixa  = viewModel.QtdPorCaixa.GetValueOrDefault(),
                    ReferenciaProduto   = produto.Referencia,
                    Usuario             = _unitOfWork.PerfilUsuarioRepository.GetByUserId(User.Identity.GetUserId())?.Nome,
                    IdImpressora        = viewModel.IdImpressora.GetValueOrDefault(),
                    IdEmpresa           = IdEmpresa
                };

                _etiquetaService.ImprimirEtiquetaArmazenagemVolume(request);

                // Lote: a quantidade salva é a quantidade de caixas/volume do lote.
                var logEtiquetagem = new LogEtiquetagem
                {
                    //IdTipoEtiquetagem = viewModel.TipoEtiquetagem,
                    IdTipoEtiquetagem = Data.Models.TipoEtiquetagemEnum.Lote.GetHashCode(),
                    IdEmpresa         = IdEmpresa,
                    Quantidade        = viewModel.QtdCaixas.Value,
                    IdUsuario         = User.Identity.GetUserId()
                };

                _logEtiquetagemService.Registrar(logEtiquetagem);

                return(Json(new AjaxGenericResultModel
                {
                    Success = true,
                    Message = "Impressão enviada com sucesso."
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);

                return(Json(new AjaxGenericResultModel
                {
                    Success = false,
                    Message = "Ocorreu um erro na impressão."
                }, JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 2
0
        public JsonResult LoteValidaImpressao(LoteEtiquetaViewModel viewModel)
        {
            try
            {
                if (!(viewModel.QtdPorCaixa > 0))
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Quantidade por Caixas deve ser maior que zero."
                    }));
                }

                if (!(viewModel.QtdCaixas > 0))
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Quantidade de Caixas deve ser maior que zero."
                    }));
                }

                if (string.IsNullOrEmpty(viewModel.DescricaoProduto))
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Referência do Produto não pode ser vazio."
                    }));
                }

                bool existeLote = _unitOfWork.LoteRepository.Existe(x => x.IdLote == viewModel.NroLote);

                if (!existeLote)
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Lote não encontrado."
                    }));
                }

                bool existeLoteProduto = _unitOfWork.LoteConferenciaRepository.ObterPorProduto(viewModel.NroLote.GetValueOrDefault(), viewModel.IdProduto).Any();

                if (!existeLoteProduto)
                {
                    return(Json(new AjaxGenericResultModel
                    {
                        Success = false,
                        Message = "Nenhum Lote com este Produto encontrado."
                    }));
                }

                return(Json(new AjaxGenericResultModel
                {
                    Success = true
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);

                return(Json(new AjaxGenericResultModel
                {
                    Success = false,
                    Message = "Ocorreu na validação da impressão."
                }, JsonRequestBehavior.AllowGet));
            }
        }