Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
 def test_fail_obter_codigo_por_municipio_curitiba_4106902(self):
     self.assertNotEqual(obter_codigo_por_municipio("Curitiba", "PR"),
                         '0000000')
Ejemplo n.º 10
0
 def test_fail_obter_codigo_por_municipio_saopaulo_3550308(self):
     self.assertNotEqual(obter_codigo_por_municipio("São Paulo", "SP"),
                         '0000000')