MDFeUtils¶
Classe utilitária com métodos para geração de chave de acesso MDF-e, formatação de datas e horas no padrão UTC, criação de XML e formatação de valores utilizados no contexto de documentos fiscais eletrônicos.
Pacote¶
sam.server.samdev.utils
Constantes¶
DateTimeFormatter yyMM: FormatoyyMM(ano e mês).DateTimeFormatter UTC: Formato ISOyyyy-MM-dd'T'HH:mm:ss.
Geração de Chave de Acesso¶
static String gerarChaveDeAcesso(String codigoIbge, LocalDate emissao, String serie, Integer numero, Long eaa10id, String aac10ni, String modelo, int formaEmissao)¶
Gera uma chave de acesso para MDF-e (modelo 58) a partir das informações do emitente, modelo, número, série e forma de emissão. A chave possui 44 dígitos com cálculo de dígito verificador.
XML¶
static ElementXml criarElementXmlNFe(String namespace)¶
Cria o elemento raiz do XML com o nome padrão "MDFe".
static ElementXml criarElementXmlNFe(String namespace, String name)¶
Permite definir o nome da raiz ao criar o elemento XML.
static String gerarXML(ElementXml nfe)¶
Converte o ElementXml para String no formato XML, com codificação UTF-8.
Datas no Formato UTC¶
static String dataFormatoUTC(LocalDateTime data)¶
Converte um LocalDateTime para o formato UTC ISO 8601 com offset fixo -03:00.
static String dataFormatoUTC(LocalDate data, LocalTime hora)¶
Converte uma data e hora para o formato UTC. Se hora for null, usa o horário atual (MDate.time()).
Formatação de Valores¶
static String formatarDecimal(BigDecimal value, int casasDecimais, boolean vlrZeroRetornaNull)¶
Formata um valor decimal com o número de casas decimais especificado. Retorna "0" ou null se o valor for zero, dependendo do parâmetro vlrZeroRetornaNull.
Inscrição Estadual¶
static String formatarIE(String ie)¶
Formata a inscrição estadual. Se o valor for "ISENTO" ou "ISENTA", retorna "ISENTO". Caso contrário, retorna apenas os números da string. Se for null, assume "ISENTO".
Exemplo de uso¶
String chave = MDFeUtils.gerarChaveDeAcesso("35", LocalDate.now(), "1", 123456, 456789L, "12345678000195", "58", 1);
String xml = MDFeUtils.gerarXML(MDFeUtils.criarElementXmlNFe("http://www.portalfiscal.inf.br/mdfe"));
String dataUTC = MDFeUtils.dataFormatoUTC(LocalDateTime.now());
String valorFormatado = MDFeUtils.formatarDecimal(new BigDecimal("154.457"), 2, false);