public void ImprimirEtiquetaPeca(ImprimirEtiquetaProdutoBase request) { Produto produto = _unitOfWork.ProdutoRepository.Todos().FirstOrDefault(x => x.Referencia.ToUpper() == request.ReferenciaProduto.ToUpper()); ProdutoEstoque empresaProduto = null; if (produto != null) { empresaProduto = _unitOfWork.ProdutoEstoqueRepository.ObterPorProdutoEmpresa(produto.IdProduto, request.IdEmpresa); } if (produto == null || empresaProduto == null) { throw new BusinessException("Produto não encontrado."); } var codigoEndereco = empresaProduto?.EnderecoArmazenagem?.Codigo ?? string.Empty; var unidade = produto.UnidadeMedida?.Sigla ?? string.Empty; var descricaoNormalizada = produto.Descricao.Normalizar(); var quantidadeFormatada = produto.MultiploVenda.ToString().PadLeft(3, '0'); int linhas = (int)Math.Ceiling((decimal)request.QuantidadeEtiquetas / CelulasEtiqueta_102x22.Count); int etiquetasRestantes = request.QuantidadeEtiquetas; var etiquetaZpl = new StringBuilder(); for (int l = 0; l < linhas; l++) { var colunasImpressao = new List <CelulaEtiqueta>(); for (int c = 0; etiquetasRestantes > 0 && c < CelulasEtiqueta_102x22.Count; c++) { colunasImpressao.Add(CelulasEtiqueta_102x22.ElementAt(c)); etiquetasRestantes--; } etiquetaZpl.AppendLine($"^XA"); etiquetaZpl.AppendLine($"^LH32,0"); etiquetaZpl.AppendLine($"^PRA^FS"); etiquetaZpl.AppendLine($"^PQ1^FS"); var imprimeEtiqueta2 = colunasImpressao.Count > 1; var imprimeEtiqueta3 = colunasImpressao.Count > 2; etiquetaZpl.AppendLine($"^FO0,45^GB146,26,30^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO272,45^GB146,26,30^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO544,45^GB146,26,30^FS"); } etiquetaZpl.AppendLine($"^FO0,49^A0N,30,25^FR^FD{produto.Referencia}^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO272,49^A0N,30,25^FR^FD{produto.Referencia}^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO544,49^A0N,30,25^FR^FD{produto.Referencia}^FS"); } etiquetaZpl.AppendLine($"^FO154,45^A0N,25,20^FD{codigoEndereco}^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO426,45^A0N,25,20^FD{codigoEndereco}^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO698,45^A0N,25,20^FD{codigoEndereco}^FS"); } etiquetaZpl.AppendLine($"^FO16,78^A0N,16,16^FD{descricaoNormalizada}^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO288,78^A0N,16,16^FD{descricaoNormalizada}^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO560,78^A0N,16,16^FD{descricaoNormalizada}^FS"); } etiquetaZpl.AppendLine($"^FO34,91^BY2,,164^BEN,73,Y,N^FD{produto.CodigoBarras}^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO306,91^BY2,,164^BEN,73,Y,N^FD{produto.CodigoBarras}^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO578,91^BY2,,164^BEN,73,Y,N^FD{produto.CodigoBarras}^FS"); } etiquetaZpl.AppendLine($"^FO016,184^A0N,8,24^FDQuant.p/emb.: {quantidadeFormatada} { unidade}^FS"); if (imprimeEtiqueta2) { etiquetaZpl.AppendLine($"^FO288,184^A0N,8,24^FDQuant.p/emb.: {quantidadeFormatada} { unidade}^FS"); } if (imprimeEtiqueta3) { etiquetaZpl.AppendLine($"^FO560,184^A0N,8,24^FDQuant.p/emb.: {quantidadeFormatada} { unidade}^FS"); } etiquetaZpl.AppendLine($"^XZ"); } byte[] etiqueta = Encoding.ASCII.GetBytes(etiquetaZpl.ToString()); _impressoraService.Imprimir(etiqueta, request.IdImpressora); var gravarHistoricoColetorRequisciao = new GravarHistoricoColetorRequisicao { IdColetorAplicacao = ColetorAplicacaoEnum.Armazenagem, IdColetorHistoricoTipo = ColetorHistoricoTipoEnum.ImprimirEtiqueta, Descricao = $"Imprimiu {request.QuantidadeEtiquetas} etiqueta(s) individual(ais) do produto {request.ReferenciaProduto}", IdEmpresa = request.IdEmpresa, IdUsuario = request.IdUsuario }; _coletorHistoricoService.GravarHistoricoColetor(gravarHistoricoColetorRequisciao); }
public void ImprimirEtiquetaPersonalizada(ImprimirEtiquetaProdutoBase request) { Produto produto = _unitOfWork.ProdutoRepository.Todos().First(x => x.Referencia.ToUpper() == request.ReferenciaProduto.ToUpper()); int linhas = (int)Math.Ceiling((decimal)request.QuantidadeEtiquetas / CelulasEtiqueta_102x22.Count); int etiquetasRestantes = request.QuantidadeEtiquetas; var etiquetaZpl = new StringBuilder(); for (int l = 0; l < linhas; l++) { var colunasImpressao = new List <CelulaEtiqueta>(); for (int c = 0; etiquetasRestantes > 0 && c < CelulasEtiqueta_102x22.Count; c++) { colunasImpressao.Add(CelulasEtiqueta_102x22.ElementAt(c)); etiquetasRestantes--; } etiquetaZpl.Append("^XA"); // Velocidade de impressão etiquetaZpl.Append("^PRA^FS"); // Configuração padrão dos códigos de barras etiquetaZpl.Append("^BY2,,164"); foreach (CelulaEtiqueta celula in colunasImpressao) { // Posição inicial de desenho da etiqueta etiquetaZpl.Append($"^LH{celula.X},{celula.Y}"); // Label referência do produto etiquetaZpl.Append("^FO12,12^GB240,25,30^FS"); etiquetaZpl.Append($"^FO14,16^A0N,30,35^FR^FD{produto.Referencia}^FS"); // Label descrição do produto etiquetaZpl.Append($"^FO12,44^FB260,1,,L,0^A0N,16,16^FD{produto.Descricao.Normalizar()}^FS"); // Código de barras do produto etiquetaZpl.Append($"^FO42,62^BEN,75,Y,N^FD{produto.CodigoBarras}^FS"); } // Redefinir posição inicial de desenho etiquetaZpl.Append("^LH0,0"); etiquetaZpl.Append("^XZ"); } byte[] etiqueta = Encoding.ASCII.GetBytes(etiquetaZpl.ToString()); _impressoraService.Imprimir(etiqueta, request.IdImpressora); var gravarHistoricoColetorRequisciao = new GravarHistoricoColetorRequisicao { IdColetorAplicacao = ColetorAplicacaoEnum.Armazenagem, IdColetorHistoricoTipo = ColetorHistoricoTipoEnum.ImprimirEtiqueta, Descricao = $"Imprimiu {request.QuantidadeEtiquetas} etiqueta(s) personalizada(s) do produto {request.ReferenciaProduto}", IdEmpresa = request.IdEmpresa, IdUsuario = request.IdUsuario }; _coletorHistoricoService.GravarHistoricoColetor(gravarHistoricoColetorRequisciao); }
public JsonResult Imprimir(RecebimentoEtiquetaIndividualPersonalizadaViewModel viewModel) { try { if (!ModelState.IsValid) { return(Json(new AjaxGenericResultModel { Success = false, Message = "Não foi possível solicitar impressão." })); } if (viewModel.TipoEtiquetagem == Data.Models.TipoEtiquetagemEnum.Individual.GetHashCode()) { var produto = _unitOfWork.ProdutoRepository.GetById(viewModel.IdProduto.Value); if (produto == null) { return(Json(new AjaxGenericResultModel { Success = false, Message = "Rerência não encontrada. Por favor, tente novamente!" })); } var request = new ImprimirEtiquetaProdutoBase { IdImpressora = viewModel.IdImpressora.GetValueOrDefault(), IdEmpresa = IdEmpresa, QuantidadeEtiquetas = viewModel.Quantidade.Value, ReferenciaProduto = produto.Referencia, IdUsuario = IdUsuario }; _etiquetaService.ImprimirEtiquetaPeca(request); } else if (viewModel.TipoEtiquetagem == Data.Models.TipoEtiquetagemEnum.Personalizada.GetHashCode()) { var produto = _unitOfWork.ProdutoRepository.GetById(viewModel.IdProduto.Value); if (produto == null) { return(Json(new AjaxGenericResultModel { Success = false, Message = "Rerência não encontrada. Por favor, tente novamente!" })); } var request = new ImprimirEtiquetaProdutoBase { IdImpressora = viewModel.IdImpressora.GetValueOrDefault(), IdEmpresa = IdEmpresa, QuantidadeEtiquetas = viewModel.Quantidade.Value, ReferenciaProduto = produto.Referencia, IdUsuario = IdUsuario }; _etiquetaService.ImprimirEtiquetaPersonalizada(request); } else if (viewModel.TipoEtiquetagem == Data.Models.TipoEtiquetagemEnum.Avulso.GetHashCode()) { var requestAvulso = new ImprimirEtiquetaAvulsoRequest { IdEmpresa = IdEmpresa, IdImpressora = viewModel.IdImpressora.GetValueOrDefault(), QuantidadeEtiquetas = viewModel.Quantidade.Value, IdUsuario = IdUsuario }; _etiquetaService.ImprimirEtiquetaAvulso(requestAvulso); } // TODO: verificar, pois a Individual imprime 2 tipos de etiqueta var logEtiquetagem = new LogEtiquetagem { IdTipoEtiquetagem = viewModel.TipoEtiquetagem, IdEmpresa = IdEmpresa, IdProduto = viewModel.IdProduto, Quantidade = viewModel.Quantidade.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)); } }