def _serializar_empresa(self, empresa, tag_raiz='CadastroEmpresa', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do empresa etree.SubElement(raiz, 'EmpCNPJ').text = so_numeros(empresa.cnpj) etree.SubElement(raiz, 'EmpRazSocial').text = empresa.razao_social etree.SubElement(raiz, 'EmpNomFantasia').text = empresa.nome_fantasia etree.SubElement(raiz, 'EmpApelido').text = empresa.apelido etree.SubElement(raiz, 'EmpIE').text = empresa.inscricao_estadual # Inscricao Municipal if empresa.inscricao_municipal: etree.SubElement(raiz, 'EmpIM').text = so_numeros(empresa.inscricao_municipal) # Endereço etree.SubElement(raiz, 'EmpEndereco').text = empresa.endereco_logradouro etree.SubElement(raiz, 'EmpNumero').text = empresa.endereco_numero if empresa.endereco_complemento: etree.SubElement(raiz, 'EmpComplemento').text = empresa.endereco_complemento etree.SubElement(raiz, 'EmpBairro').text = empresa.endereco_bairro etree.SubElement(raiz, 'MunCodigo').text = obter_codigo_por_municipio( empresa.endereco_municipio, empresa.endereco_uf) etree.SubElement(raiz, 'EmpCEP').text = so_numeros(empresa.endereco_cep) if empresa.endereco_telefone: etree.SubElement(raiz, 'EmpTelefone').text = empresa.endereco_telefone etree.SubElement(raiz, 'EmpCNAE').text = empresa.cnae_fiscal etree.SubElement(raiz, 'EmpCRT').text = empresa.codigo_de_regime_tributario etree.SubElement(raiz, 'EmpIEST').text = '' etree.SubElement(raiz, 'EmpMarca').text = '' etree.SubElement(raiz, 'EmpMarcaExtensao').text = '' etree.SubElement(raiz, 'EmpEmail').text = empresa.email etree.SubElement(raiz, 'EmpTpoEndereco').text = empresa.tipo_endereco # Certificado raiz.append(self._serializar_certificado(empresa, retorna_string=False)) # Usuarios raiz.append(self._serializar_usuario(empresa, retorna_string=False)) # Parametros raiz.append(self._serializar_parametros(empresa, retorna_string=False)) # Licenciamento raiz.append(self._serializar_licenciamento(empresa, retorna_string=False)) if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_emitente(self, emitente, tag_raiz='emit', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do emitente etree.SubElement(raiz, 'CNPJ').text = so_numeros(emitente.cnpj) etree.SubElement(raiz, 'xNome').text = emitente.razao_social etree.SubElement(raiz, 'xFant').text = emitente.nome_fantasia # Endereço endereco = etree.SubElement(raiz, 'enderEmit') etree.SubElement(endereco, 'xLgr').text = emitente.endereco_logradouro etree.SubElement(endereco, 'nro').text = emitente.endereco_numero if emitente.endereco_complemento: etree.SubElement(endereco, 'xCpl').text = emitente.endereco_complemento etree.SubElement(endereco, 'xBairro').text = emitente.endereco_bairro etree.SubElement(endereco, 'cMun').text = obter_codigo_por_municipio( emitente.endereco_municipio, emitente.endereco_uf) etree.SubElement(endereco, 'xMun').text = emitente.endereco_municipio etree.SubElement(endereco, 'UF').text = emitente.endereco_uf etree.SubElement(endereco, 'CEP').text = so_numeros(emitente.endereco_cep) etree.SubElement(endereco, 'cPais').text = emitente.endereco_pais etree.SubElement(endereco, 'xPais').text = obter_pais_por_codigo( emitente.endereco_pais) if emitente.endereco_telefone: etree.SubElement(endereco, 'fone').text = emitente.endereco_telefone etree.SubElement(raiz, 'IE').text = emitente.inscricao_estadual # Apenas NF-e if emitente.inscricao_estadual_subst_tributaria: etree.SubElement( raiz, 'IEST').text = emitente.inscricao_estadual_subst_tributaria # Inscricao Municipal if emitente.inscricao_municipal: etree.SubElement(raiz, 'IM').text = emitente.inscricao_municipal # Campo Opcional. Pode ser informado quando a Inscrição Municipal (id:C19) for informada. if emitente.cnae_fiscal: etree.SubElement(raiz, 'CNAE').text = emitente.cnae_fiscal etree.SubElement(raiz, 'CRT').text = emitente.codigo_de_regime_tributario if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_cliente(self, cliente, modelo, tag_raiz="dest", retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do cliente (distinatario) etree.SubElement(raiz, cliente.tipo_documento).text = so_numeros(cliente.numero_documento) if not self._so_cpf: if cliente.razao_social: etree.SubElement(raiz, "xNome").text = cliente.razao_social endereco = etree.SubElement(raiz, "enderDest") etree.SubElement(endereco, "xLgr").text = cliente.endereco_logradouro etree.SubElement(endereco, "nro").text = cliente.endereco_numero if cliente.endereco_complemento: etree.SubElement(endereco, "xCpl").text = cliente.endereco_complemento etree.SubElement(endereco, "xBairro").text = cliente.endereco_bairro etree.SubElement(endereco, "cMun").text = obter_codigo_por_municipio( cliente.endereco_municipio, cliente.endereco_uf ) etree.SubElement(endereco, "xMun").text = cliente.endereco_municipio etree.SubElement(endereco, "UF").text = cliente.endereco_uf etree.SubElement(endereco, "CEP").text = so_numeros(cliente.endereco_cep) etree.SubElement(endereco, "cPais").text = cliente.endereco_pais etree.SubElement(endereco, "xPais").text = obter_pais_por_codigo(cliente.endereco_pais) if cliente.endereco_telefone: etree.SubElement(endereco, "fone").text = cliente.endereco_telefone # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; 2 – Contribuinte isento de inscrição; 9 – Não Contribuinte if cliente.indicador_ie == 9: # 9 – Não Contribuinte etree.SubElement(raiz, "indIEDest").text = "9" elif (cliente.indicador_ie == 2 or cliente.isento_icms) or cliente.inscricao_estadual.upper() == "ISENTO": etree.SubElement(raiz, "indIEDest").text = "2" else: # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; etree.SubElement(raiz, "indIEDest").text = str(cliente.indicador_ie) etree.SubElement(raiz, "IE").text = cliente.inscricao_estadual # Suframa if cliente.inscricao_suframa: etree.SubElement(raiz, "ISUF").text = cliente.inscricao_suframa # Inscrição Municipal do tomador do serviço if cliente.inscricao_municipal: etree.SubElement(raiz, "IM").text = cliente.inscricao_municipal # E-mail if cliente.email: etree.SubElement(raiz, "email").text = cliente.email if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_cliente(self, cliente, modelo, tag_raiz='dest', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do cliente (distinatario) etree.SubElement(raiz, cliente.tipo_documento).text = so_numeros(cliente.numero_documento) if cliente.razao_social: etree.SubElement(raiz, 'xNome').text = cliente.razao_social if not self._so_cpf: endereco = etree.SubElement(raiz, 'enderDest') etree.SubElement(endereco, 'xLgr').text = cliente.endereco_logradouro etree.SubElement(endereco, 'nro').text = cliente.endereco_numero if cliente.endereco_complemento: etree.SubElement(endereco, 'xCpl').text = cliente.endereco_complemento etree.SubElement(endereco, 'xBairro').text = cliente.endereco_bairro etree.SubElement(endereco, 'cMun').text = obter_codigo_por_municipio( cliente.endereco_municipio, cliente.endereco_uf) etree.SubElement(endereco, 'xMun').text = cliente.endereco_municipio etree.SubElement(endereco, 'UF').text = cliente.endereco_uf etree.SubElement(endereco, 'CEP').text = so_numeros(cliente.endereco_cep) etree.SubElement(endereco, 'cPais').text = cliente.endereco_pais etree.SubElement(endereco, 'xPais').text = obter_pais_por_codigo(cliente.endereco_pais) if cliente.endereco_telefone: etree.SubElement(endereco, 'fone').text = cliente.endereco_telefone #Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; 2 – Contribuinte isento de inscrição; 9 – Não Contribuinte if cliente.isento_icms or cliente.inscricao_estadual.upper() == 'ISENTO': etree.SubElement(raiz, 'indIEDest').text = str(2) etree.SubElement(raiz, 'IE').text = 'ISENTO' elif cliente.indicador_ie == 9: # 9 – Não Contribuinte etree.SubElement(raiz, 'indIEDest').text = str(9) else: # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; etree.SubElement(raiz, 'indIEDest').text = cliente.indicador_ie etree.SubElement(raiz, 'IE').text = cliente.inscricao_estadual # Suframa if cliente.inscricao_suframa: etree.SubElement(raiz, 'ISUF').text = cliente.inscricao_suframa # Inscrição Municipal do tomador do serviço if cliente.inscricao_municipal: etree.SubElement(raiz, 'IM').text = cliente.inscricao_municipal # E-mail if cliente.email: etree.SubElement(raiz, 'email').text = cliente.email if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_cliente(self, cliente, modelo, tag_raiz='dest', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do cliente (distinatario) etree.SubElement(raiz, cliente.tipo_documento).text = so_numeros(cliente.numero_documento) if not self._so_cpf: if cliente.razao_social: etree.SubElement(raiz, 'xNome').text = cliente.razao_social endereco = etree.SubElement(raiz, 'enderDest') etree.SubElement(endereco, 'xLgr').text = cliente.endereco_logradouro etree.SubElement(endereco, 'nro').text = cliente.endereco_numero if cliente.endereco_complemento: etree.SubElement(endereco, 'xCpl').text = cliente.endereco_complemento etree.SubElement(endereco, 'xBairro').text = cliente.endereco_bairro etree.SubElement(endereco, 'cMun').text = obter_codigo_por_municipio( cliente.endereco_municipio, cliente.endereco_uf) etree.SubElement(endereco, 'xMun').text = cliente.endereco_municipio etree.SubElement(endereco, 'UF').text = cliente.endereco_uf etree.SubElement(endereco, 'CEP').text = so_numeros(cliente.endereco_cep) etree.SubElement(endereco, 'cPais').text = cliente.endereco_pais etree.SubElement(endereco, 'xPais').text = obter_pais_por_codigo(cliente.endereco_pais) if cliente.endereco_telefone: etree.SubElement(endereco, 'fone').text = cliente.endereco_telefone #Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; 2 – Contribuinte isento de inscrição; 9 – Não Contribuinte if cliente.indicador_ie == 9: # 9 – Não Contribuinte etree.SubElement(raiz, 'indIEDest').text = '9' elif (cliente.indicador_ie == 2 or cliente.isento_icms) or cliente.inscricao_estadual.upper() == 'ISENTO': etree.SubElement(raiz, 'indIEDest').text = '2' else: # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; etree.SubElement(raiz, 'indIEDest').text = str(cliente.indicador_ie) etree.SubElement(raiz, 'IE').text = cliente.inscricao_estadual # Suframa if cliente.inscricao_suframa: etree.SubElement(raiz, 'ISUF').text = cliente.inscricao_suframa # Inscrição Municipal do tomador do serviço if cliente.inscricao_municipal: etree.SubElement(raiz, 'IM').text = cliente.inscricao_municipal # E-mail if cliente.email: etree.SubElement(raiz, 'email').text = cliente.email if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_emitente(self, emitente, tag_raiz="emit", retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do emitente etree.SubElement(raiz, "CNPJ").text = so_numeros(emitente.cnpj) etree.SubElement(raiz, "xNome").text = emitente.razao_social etree.SubElement(raiz, "xFant").text = emitente.nome_fantasia # Endereço endereco = etree.SubElement(raiz, "enderEmit") etree.SubElement(endereco, "xLgr").text = emitente.endereco_logradouro etree.SubElement(endereco, "nro").text = emitente.endereco_numero if emitente.endereco_complemento: etree.SubElement(endereco, "xCpl").text = emitente.endereco_complemento etree.SubElement(endereco, "xBairro").text = emitente.endereco_bairro etree.SubElement(endereco, "cMun").text = obter_codigo_por_municipio( emitente.endereco_municipio, emitente.endereco_uf ) etree.SubElement(endereco, "xMun").text = emitente.endereco_municipio etree.SubElement(endereco, "UF").text = emitente.endereco_uf etree.SubElement(endereco, "CEP").text = so_numeros(emitente.endereco_cep) etree.SubElement(endereco, "cPais").text = emitente.endereco_pais etree.SubElement(endereco, "xPais").text = obter_pais_por_codigo(emitente.endereco_pais) if emitente.endereco_telefone: etree.SubElement(endereco, "fone").text = emitente.endereco_telefone etree.SubElement(raiz, "IE").text = emitente.inscricao_estadual # Apenas NF-e if emitente.inscricao_estadual_subst_tributaria: etree.SubElement(raiz, "IEST").text = emitente.inscricao_estadual_subst_tributaria # Inscricao Municipal if emitente.inscricao_municipal: etree.SubElement(raiz, "IM").text = emitente.inscricao_municipal # Campo Opcional. Pode ser informado quando a Inscrição Municipal (id:C19) for informada. if emitente.cnae_fiscal: etree.SubElement(raiz, "CNAE").text = emitente.cnae_fiscal etree.SubElement(raiz, "CRT").text = emitente.codigo_de_regime_tributario if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_emitente(self, emitente, tag_raiz='emit', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do emitente etree.SubElement(raiz, 'CNPJ').text = so_numeros(emitente.cnpj) etree.SubElement(raiz, 'xNome').text = emitente.razao_social etree.SubElement(raiz, 'xFant').text = emitente.nome_fantasia # Endereço endereco = etree.SubElement(raiz, 'enderEmit') etree.SubElement(endereco, 'xLgr').text = emitente.endereco_logradouro etree.SubElement(endereco, 'nro').text = emitente.endereco_numero if emitente.endereco_complemento: etree.SubElement(endereco, 'xCpl').text = emitente.endereco_complemento etree.SubElement(endereco, 'xBairro').text = emitente.endereco_bairro etree.SubElement(endereco, 'cMun').text = obter_codigo_por_municipio( emitente.endereco_municipio, emitente.endereco_uf) etree.SubElement(endereco, 'xMun').text = emitente.endereco_municipio etree.SubElement(endereco, 'UF').text = emitente.endereco_uf etree.SubElement(endereco, 'CEP').text = so_numeros(emitente.endereco_cep) etree.SubElement(endereco, 'cPais').text = emitente.endereco_pais etree.SubElement(endereco, 'xPais').text = obter_pais_por_codigo(emitente.endereco_pais) if emitente.endereco_telefone: etree.SubElement(endereco, 'fone').text = emitente.endereco_telefone etree.SubElement(raiz, 'IE').text = emitente.inscricao_estadual # Apenas NF-e if emitente.inscricao_estadual_subst_tributaria: etree.SubElement(raiz, 'IEST').text = emitente.inscricao_estadual_subst_tributaria # Inscricao Municipal if emitente.inscricao_municipal: etree.SubElement(raiz, 'IM').text = emitente.inscricao_municipal # Campo Opcional. Pode ser informado quando a Inscrição Municipal (id:C19) for informada. if emitente.cnae_fiscal: etree.SubElement(raiz, 'CNAE').text = emitente.cnae_fiscal etree.SubElement(raiz, 'CRT').text = emitente.codigo_de_regime_tributario if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def _serializar_cliente(self, cliente, modelo, tag_raiz='dest', retorna_string=True): raiz = etree.Element(tag_raiz) # Dados do cliente (distinatario) etree.SubElement(raiz, '%s_dest' % (cliente.tipo_documento)).text = so_numeros( cliente.numero_documento) if not self._so_cpf: if cliente.razao_social: etree.SubElement(raiz, 'xNome_dest').text = cliente.razao_social if any([cliente.endereco_logradouro, cliente.endereco_numero, cliente.endereco_bairro, cliente.endereco_municipio, cliente.endereco_uf, cliente.endereco_cep]): endereco = etree.SubElement(raiz, 'enderDest') if cliente.endereco_logradouro: etree.SubElement( endereco, 'xLgr_dest').text = cliente.endereco_logradouro if cliente.endereco_numero: etree.SubElement(endereco, 'nro_dest').text = cliente.endereco_numero if cliente.endereco_complemento: etree.SubElement(endereco, 'xCpl').text = cliente.endereco_complemento if cliente.endereco_bairro: etree.SubElement( endereco, 'xBairro_dest').text = cliente.endereco_bairro if cliente.endereco_municipio and cliente.endereco_uf: etree.SubElement( endereco, 'xMun_dest').text = cliente.endereco_municipio etree.SubElement(endereco, 'UF_dest').text = cliente.endereco_uf etree.SubElement(endereco, 'cMun_dest').text = obter_codigo_por_municipio( cliente.endereco_municipio, cliente.endereco_uf) if cliente.endereco_cep: etree.SubElement(endereco, 'CEP_dest').text = so_numeros( cliente.endereco_cep) etree.SubElement(endereco, 'cPais_dest').text = cliente.endereco_pais etree.SubElement(endereco, 'xPais_dest').text = obter_pais_por_codigo( cliente.endereco_pais) if cliente.endereco_telefone: etree.SubElement(endereco, 'fone_dest').text = so_numeros( cliente.endereco_telefone) # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; # 2 – Contribuinte isento de inscrição; 9 – Não Contribuinte if cliente.indicador_ie == 9: # 9 – Não Contribuinte etree.SubElement(raiz, 'indIEDest').text = '9' elif (cliente.indicador_ie == 2 or cliente.isento_icms) or cliente.inscricao_estadual.upper() == 'ISENTO': etree.SubElement(raiz, 'indIEDest').text = '2' else: # Indicador da IE do destinatário: 1 – Contribuinte ICMSpagamento à vista; etree.SubElement(raiz, 'indIEDest').text = str(cliente.indicador_ie) # E-mail if cliente.email: etree.SubElement(raiz, 'Email_dest').text = cliente.email if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: return raiz
def test_fail_obter_codigo_por_municipio_curitiba_4106902(self): self.assertNotEqual(obter_codigo_por_municipio("Curitiba", "PR"), '0000000')
def test_fail_obter_codigo_por_municipio_saopaulo_3550308(self): self.assertNotEqual(obter_codigo_por_municipio("São Paulo", "SP"), '0000000')