Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
            }
        }