public void ImprimirEtiquetaAvulso(ImprimirEtiquetaAvulsoRequest request) { var empresa = _unitOfWork.EmpresaRepository.GetById(request.IdEmpresa); string sac = empresa.TelefoneSAC.MascaraTelefone(); string razaoSocial = empresa.RazaoSocial.Normalizar(); string cnpj = empresa.CNPJ.MascaraCNPJ(); 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"); foreach (CelulaEtiqueta celula in colunasImpressao) { // Posição inicial de desenho da etiqueta etiquetaZpl.Append($"^LH{celula.X},{celula.Y}"); // Label Distribuido por etiquetaZpl.Append("^FO12,40^FB260,1,,C,0^A0N,30,20^FDDISTRIBUIDO POR:^FS"); etiquetaZpl.Append($"^FO12,70^FB260,1,,C,0^A0N,30,20^FD{razaoSocial}^FS"); // Label CNPJ etiquetaZpl.Append($"^FO12,100^FB260,1,,C,0^A0N,30,20^FDCNPJ:{cnpj}^FS"); // Label Telefone SAC etiquetaZpl.Append($"^FO12,130^FB260,1,,C,0^A0N,30,20^FDSAC.:{sac}^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) avulsa(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)); } }