def cabecalho(self): self.normal() emit = self.root.find('./infCFe/emit') enderEmit = emit.find('enderEmit') nome_fantasia = emit.findtext('xFant') razao_social = emit.findtext('xNome') logradouro = enderEmit.findtext('xLgr') numero = enderEmit.findtext('nro') complemento = enderEmit.findtext('xCpl') bairro = enderEmit.findtext('xBairro') if numero: # número não é obrigatório logradouro = u'{}, {}'.format(logradouro, numero) if complemento: # complemento não é obrigatório # faz um esforço para manter o complemento na mesma linha que o # logradouro/número se couber, senão o complemento irá usar uma # linha exclusiva... if len(logradouro) + len(complemento) < self._colunas: # ok, mantém o complemento na mesma linha que o logradouro logradouro = u'{}, {}'.format(logradouro, complemento) complemento = '' # ignora a linha que deveria conter o xCpl cidade = u'{}/{} CEP: {}'.format( enderEmit.findtext('xMun'), br.uf_pelo_codigo(int(self.root.findtext('./infCFe/ide/cUF'))), br.as_cep(enderEmit.findtext('CEP'))) partes_endereco = [logradouro, complemento, bairro, cidade,] endereco = u'\r\n'.join([e for e in partes_endereco if e]) cnpj = 'CNPJ: {}'.format(br.as_cnpj(emit.findtext('CNPJ'))) im = 'IM: {}'.format(emit.findtext('IM') or '') ie = 'IE: {}'.format(emit.findtext('IE')) self.centro() self.negrito() if nome_fantasia: self.quebrar(nome_fantasia) self.quebrar(razao_social) self.negrito() self.quebrar(endereco) self.avanco() self.esquerda() self.texto(cnpj) self.texto(ie) if im: self.texto(im) self.separador()
def test_as_cnpj(): assert br.as_cnpj('08427847000169') == '08.427.847/0001-69' assert br.as_cnpj('08427847000168') == '08427847000168' # segundo dígito DV inválido assert br.as_cnpj('08.427.847/0001-69') == '08.427.847/0001-69' # número CNPJ original válido, já mascarado, é OK assert br.as_cnpj('') == '' # número inválido devolve o que recebeu intocado assert br.as_cnpj('000') == '000'