Esempio n. 1
0
        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);
        }
Esempio n. 2
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));
            }
        }