package com.senior.utils.relatoriosgerenciais; import java.math.BigDecimal; import java.math.RoundingMode; import com.senior.commons.CPFCNPJ; import com.senior.utils.relatoriosgerenciais.entidades.CartaoPresenteRG; import com.senior.utils.relatoriosgerenciais.entidades.ConvenioRG; import com.senior.utils.relatoriosgerenciais.entidades.EnderecoRG; import com.senior.utils.relatoriosgerenciais.entidades.IEntidadeRG; import com.senior.utils.relatoriosgerenciais.entidades.ParcelaRG; import com.senior.utils.relatoriosgerenciais.entidades.ProdutoRG; import com.senior.utils.relatoriosgerenciais.entidades.ServicoRG; import com.senior.utils.relatoriosgerenciais.entidades.VendedorRG; public enum TagsEnum { /** * número do cupom fiscal de referência */ COO_CUPOM_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCooCupomRef(); } }, /** * */ TOTAL_CUPOM_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(entity.getCupomRg().getTotalCupomRef(), 2, RoundingMode.DOWN); } }, /** * valor que já foi pago do cupom (em dinheiro, cartão ou qualquer outra forma, exceto a prazo) */ TOTAL_PAGO_CUPOM(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(entity.getCupomRg().getTotalPagoCupom(), 2, RoundingMode.DOWN); } }, /** * Valor total parcelado (valor a prazo); */ TOTAL_PARCELADO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(entity.getCupomRg().getTotalParcelado(), 2, RoundingMode.DOWN); } }, /** * código da filial */ COD_FILIAL(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCodFilial(); } }, /** * nome da filial */ NOME_FILIAL(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNomeFilial(); } }, /** * código do operador */ COD_OPERADOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCodOperador(); } }, /** * login do operador */ LOGIN_OPERADOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getLoginOperador(); } }, /** * nome do operador */ NOME_OPERADOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNomeOperador(); } }, /** * código do vendedor */ COD_VENDEDOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((VendedorRG) entity).getCodVendedor(); } }, /** * login do vendedor */ LOGIN_VENDEDOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((VendedorRG) entity).getLoginVendedor(); } }, /** * nome do vendedor */ NOME_VENDEDOR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((VendedorRG) entity).getNomeVendedor(); } }, /** * código do cliente (somente de permitido conforme UC-JLCA-0002 - REQ0012) */ COD_CLIENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCodCliente(); } }, /** * nome do cliente */ NOME_CLIENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNomeCliente(); } }, /** * número do cadastro de pessoa fisica do cliente */ CPF_CLIENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return CPFCNPJ.formata(entity.getCupomRg().getCpfCliente()); } }, /** * número do registro geral do cliente */ RG_CLIENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getRgCliente(); } }, /** * data de expedição do registro geral do cliente */ DT_RG_CLIENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getDtRGCliente(); } }, /** * Tipo do endereço (Cadastro, Entrega, Cobrança) */ CL_END_TIPO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndTipo(); } }, /** * Código do endereço */ CL_END_CODIGO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndCodigo(); } }, /** * UF do endereço */ CL_END_UF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndUF(); } }, /** * município do endereço */ CL_END_MUNICIPIO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndMunicipio(); } }, /** * bairro do endereço */ CL_END_BAIRRO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndBairro(); } }, /** * logradouro do endereço */ CL_END_LOGRADOURO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndLogradouro(); } }, /** * número do logradouro */ CL_END_NUMERO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndNumero(); } }, /** * complemento do endereço */ CL_END_COMPLEMENTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndComplemento(); } }, /** * código de endereçamento postal do endereço */ CL_END_CEP(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndCEP(); } }, /** * ponto de referência */ CL_END_REFERENCIA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndReferencia(); } }, /** * pessoa de contato */ CL_END_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndContato(); } }, /** * CPF da pessoa de contato */ CL_END_CPF_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndCPFContato(); } }, /** * telefone de contato */ CL_END_TELEFONE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndTelefone(); } }, /** * celular de contato */ CL_END_CELULAR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getClEndCelular(); } }, /** * número total de parcelas */ QTD_PARCELAS(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getQtdParcelas(); } }, /** * Código da condição de pagamento */ COD_COND_PAGTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCodCondPagto(); } }, /** * Descrição da condição de pagamento */ DESC_COND_PAGTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getDescCondPagto(); } }, /** * código do produto */ COD_PRODUTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getCodProduto(); } }, /** * código da embalagem, lido na hora da venda */ COD_EMBALAGEM(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getCodEmbalagem(); } }, /** * descrição do produto */ DESC_PRODUTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getDescProduto(); } }, /** * situação do produto (entregue / entregar) */ SIT_PRODUTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getSitProduto(); } }, /** * A quantidade do produto */ QTD_ENTREGA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getQuantidade(); } }, /** * A quantidade do produto */ QTD_PRODUTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ProdutoRG) entity).getQuantidadeTotal(); } }, /** * código do serviço */ COD_SERVICO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getCodServico(); } }, /** * descrição do serviço */ DESC_SERVICO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getDescServico(); } }, /** * Valor total do item de serviço; */ TOTAL_SERVICO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(((ServicoRG) entity).getTotalServico(), 2, RoundingMode.DOWN); } }, /** * Valor total de frete vendido como acréscimo; */ TOTAL_FRETE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { //TODO Em vez de retornar BigDecimal.ZERO, retornar o atributo valorFrete do CupomRg return setScaleIfNotNull(entity.getCupomRg().getValorFrete(), 2, RoundingMode.DOWN); } }, /** * tipo do serviço (frete / garantia estendida / seguro parcela) */ TIPO_SERVICO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getTipoServico(); } }, /** * listagem dos códigos de produtos ao qual o item de serviço referencia; (ver REQ0018) */ PRODUTO_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getProdutosRef(); } }, /** * Tipo do endereço (Cadastro, Entrega, Cobrança) */ SV_END_TIPO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndTipo(); } }, /** * Código do endereço */ SV_END_CODIGO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndCodigo(); } }, /** * UF do endereço */ SV_END_UF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndUF(); } }, /** * município do endereço */ SV_END_MUNICIPIO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndMunicipio(); } }, /** * bairro do endereço */ SV_END_BAIRRO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndBairro(); } }, /** * logradouro do endereço */ SV_END_LOGRADOURO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndLogradouro(); } }, /** * número do logradouro */ SV_END_NUMERO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndNumero(); } }, /** * complemento do endereço */ SV_END_COMPLEMENTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndComplemento(); } }, /** * código de endereçamento postal */ SV_END_CEP(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndCEP(); } }, /** * ponto de referência */ SV_END_REFERENCIA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndReferencia(); } }, /** * pessoa de contato */ SV_END_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndContato(); } }, /** * CPF da pessoa de contato */ SV_END_CPF_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndCPFContato(); } }, /** * telefone de contato */ SV_END_TELEFONE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndTelefone(); } }, /** * celular de contato */ SV_END_CELULAR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ServicoRG) entity).getSvEndCelular(); } }, /** * Tipo do endereço (Cadastro, Entrega, Cobrança) */ END_TIPO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndTipo(); } }, /** * Código do endereço */ END_CODIGO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndCodigo(); } }, /** * UF do endereço */ END_UF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndUF(); } }, /** * município do endereço */ END_MUNICIPIO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndMunicipio(); } }, /** * bairro do endereço */ END_BAIRRO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndBairro(); } }, /** * logradouro do endereço */ END_LOGRADOURO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndLogradouro(); } }, /** * número do logradouro */ END_NUMERO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndNumero(); } }, /** * complemento do endereço */ END_COMPLEMENTO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndComplemento(); } }, /** * código de endereçamento postal */ END_CEP(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndCEP(); } }, /** * ponto de referência */ END_REFERENCIA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndReferencia(); } }, /** * pessoa de contato */ END_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndContato(); } }, /** * CPF da pessoa de contato */ END_CPF_CONTATO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndCPFContato(); } }, /** * telefone de contato */ END_TELEFONE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndTelefone(); } }, /** * celular de contato */ END_CELULAR(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((EnderecoRG) entity).getEndCelular(); } }, /** * número da parcela */ NUM_PARCELA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ParcelaRG) entity).getNumParcela(); } }, /** * data de vencimento da parcela */ DT_VEN_PARCELA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ParcelaRG) entity).getDtVenParcela(); } }, /** * valor da parcela */ VALOR_PARCELA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(((ParcelaRG) entity).getValorParcela(), 2, RoundingMode.DOWN); } }, /** * representação do localizador da parcela em código de barras */ COD_BARRAS(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return "" + ((ParcelaRG) entity).getCodBarras() + "";//as constantes "" e "" devem ser colocadas ao redor do códiugo de barras para indicar a impressora a usar a rotina de geração de código de barras } }, /** * */ LOC_PARCELA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ParcelaRG) entity).getLocParcela(); } }, /** * */ NUM_TITULO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ParcelaRG) entity).getNumTitulo(); } }, /** * centraliza o texto interno */ CENTRO(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * converte para maiúsculo os caracteres internos */ MAIUSCULO(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * converte para minúsculo os caracteres internos */ MINUSCULO(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de produtos */ PRODUTOS(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de serviços */ SERVICOS(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de parcelas */ PARCELAS(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de endereços */ ENDERECOS(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de parcelas */ CARTAO_PRESENTE(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de atributos de convênios e dependentes */ CONVENIOS(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * descrição do convênio */ DESCRICAO_CONVENIO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ConvenioRG) entity).getDescricaoConvenio(); } }, /** * nome do dependente */ NOME_DEPENDENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ConvenioRG) entity).getNomeDependente(); } }, /** * cpf do dependente */ CPF_DEPENDENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((ConvenioRG) entity).getCpfDependente(); } }, /** * insere um corte de papel. */ CORTEPAPEL(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return "***PICOTE***";//essa string indica para a rotina de impressão que deve ser enviado um comando de acionamento de guilhotina da impressora. } }, /** * um bloco condicional */ BLOCO(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * itera na lista de produtos */ VENDEDORES(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * data do cupom fiscal */ DT_VENDA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getDtVenda(); } }, /** * número do equipamento fiscal */ COD_ECF_CUPOM_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCodEcf(); } }, /** * número de série do equipamento fiscal */ SERIE_ECF_CUPOM_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNumeroSerieEcf(); } }, /** * CRO do cupom fiscal */ CRO_CUPOM_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getCroCupomRef(); } }, /** * */ DAV_NUMERO(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNumeroDav(); } }, /** * */ DAVS_MESCLADOS(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getPedidosMesclados(); } }, SERIE_NFCE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getSerieNfce(); } }, /** * */ NUMERO_NFCE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getNumeroNfce(); } }, /** * */ TOTAL_VENDA_REF(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(entity.getCupomRg().getTotalCupomRef(), 2, RoundingMode.DOWN); } }, /** * valor que já foi pago do cupom (em dinheiro, cartão ou qualquer outra forma, exceto a prazo) */ TOTAL_PAGO_VENDA(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(entity.getCupomRg().getTotalPagoCupom(), 2, RoundingMode.DOWN); } }, COD_BARRAS_BLOCO(false) { @Override public Object getAttributeVal(IEntidadeRG entity) { return null; } }, /** * representação do localizador da parcela em código de barras */ COD_BARRAS_CARTAO_PRESENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return "" + ((CartaoPresenteRG) entity).getCodBarrasCartaoPresente() + "";//as constantes "" e "" devem ser colocadas ao redor do códiugo de barras para indicar a impressora a usar a rotina de geração de código de barras } }, /** * */ LOC_CARTAO_PRESENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((CartaoPresenteRG) entity).getLocCartaoPresente(); } }, /** * */ NUM_CARTAO_PRESENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((CartaoPresenteRG) entity).getNumCartaoPresente(); } }, VALOR_CARTAO_PRESENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return setScaleIfNotNull(((CartaoPresenteRG) entity).getValorCartaoPresente(), 2, RoundingMode.DOWN); } }, /** * descrição do serviço */ DESC_CARTAO_PRESENTE(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return ((CartaoPresenteRG) entity).getDescServico(); } }, /** * Outras informações do pedido */ OUTRAS_INFORMACOES(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return entity.getCupomRg().getObservacoesPedido(); } }, NAO_FISCAL(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return "Não é documento fiscal"; } }, EXIJA_CUPOM(true) { @Override public Object getAttributeVal(IEntidadeRG entity) { return "Exija seu cupom fiscal"; } }, ; private boolean tagSimples; TagsEnum(boolean tagSimples) { this.tagSimples = tagSimples; } public boolean isTagSimples() { return tagSimples; } public abstract Object getAttributeVal(IEntidadeRG entity); /** * * @param val * @return */ public static TagsEnum getTagEnum(String val) { if (val != null) { val = val.trim().toUpperCase(); try { return TagsEnum.valueOf(val); } catch (java.lang.IllegalArgumentException x) { //nada } } return null; } protected Object setScaleIfNotNull(BigDecimal vlr, int scale, RoundingMode mode) { if (vlr != null) { return vlr.setScale(scale, mode); } return null; } }