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)); } }
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)); } }