def __init__(self):
     super(Deducao, self).__init__()
     self.DeducaoPor = TagCaracter(nome='DeducaoPor',
                                   tamanho=[1, 20],
                                   raiz='//Deducao')
     self.TipoDeducao = TagCaracter(nome='TipoDeducao',
                                    tamanho=[1, 255],
                                    raiz='//Deducao')
     self.CPFCNPJReferencia = TagCaracter(nome='CPFCNPJReferencia',
                                          tamanho=[11, 14],
                                          raiz='//Deducao',
                                          obrigatorio=False)
     self.NumeroNFReferencia = TagInteiro(nome='NumeroNFReferencia',
                                          tamanho=[1, 12, 1],
                                          raiz='//Deducao',
                                          obrigatorio=False)
     self.ValorTotalReferencia = TagDecimal(nome='ValorTotalReferencia',
                                            tamanho=[1, 15, 1],
                                            decimais=[0, 2, 2],
                                            raiz='//Deducao',
                                            obrigatorio=False)
     self.PercentualDeduzir = TagDecimal(nome='PercentualDeduzir',
                                         tamanho=[1, 5, 1],
                                         decimais=[0, 2, 2],
                                         raiz='//Deducao')
     self.ValorDeduzir = TagDecimal(nome='ValorDeduzir',
                                    tamanho=[1, 15, 1],
                                    decimais=[0, 2, 2],
                                    raiz='//Deducao')
 def __init__(self):
     super(_Cabecalho, self).__init__()
     self.CodCidade            = TagInteiro(nome='CodCidade'            , tamanho=[ 1, 10, 1], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.Sucesso              = TagBoolean(nome='Sucesso'                                   , raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.NumeroLote           = TagInteiro(nome='NumeroLote'           , tamanho=[ 1, 12, 1], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.CPFCNPJRemetente     = TagCaracter(nome='CPFCNPJRemetente'    , tamanho=[11, 14]   , raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.RazaoSocialRemetente = TagCaracter(nome='RazaoSocialRemetente', tamanho=[ 1, 120]  , raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.DataEnvioLote        = TagDataHora(nome='DataEnvioLote'                            , raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.QtdNotasProcessadas  = TagInteiro(nome='QtdNotasProcessadas'  , tamanho=[ 1, 10, 1], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.TempoProcessamento   = TagInteiro(nome='TempoProcessamento'   , tamanho=[ 1, 15, 1], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.ValorTotalServicos   = TagDecimal(nome='ValorTotalServicos'   , tamanho=[ 1, 15, 1], decimais=[0, 2, 2], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.ValorTotalDeducoes   = TagDecimal(nome='ValorTotalDeducoes'   , tamanho=[ 1, 15, 1], decimais=[0, 2, 2], raiz='//nfse:RetornoConsultaLote/Cabecalho')
     self.Versao               = TagInteiro(nome='Versao'               , tamanho=[ 1,  3, 1], raiz='//nfse:RetornoConsultaLote/Cabecalho', valor=1)
 def __init__(self):
     super(ConsultaNFSe, self).__init__()
     self.InscricaoPrestador   = TagCaracter(nome='InscricaoPrestador'  , tamanho=[6,  11]   , raiz='//ConsultaNFSe')
     self.NumeroNFe            = TagInteiro(nome='NumeroNFe'            , tamanho=[1,  12, 1], raiz='//ConsultaNFSe')
     self.CodigoVerificacao    = TagCaracter(nome='CodigoVerificacao'   , tamanho=[1, 255]   , raiz='//ConsultaNFSe')
     self.SerieRPS             = TagCaracter(nome='SerieRPS'            , tamanho=[2,   2]   , raiz='//ConsultaNFSe')
     self.NumeroRPS            = TagInteiro(nome='NumeroRPS'            , tamanho=[1,  12, 1], raiz='//ConsultaNFSe')
     self.DataEmissaoRPS       = TagDataHora(nome='DataEmissaoRPS'                           , raiz='//ConsultaNFSe')
     self.RazaoSocialPrestador = TagCaracter(nome='RazaoSocialPrestador', tamanho=[1, 120]   , raiz='//ConsultaNFSe')
     self.TipoRecolhimento     = TagCaracter(nome='TipoRecolhimento'    , tamanho=[1,   1]   , raiz='//ConsultaNFSe')
     self.ValorDeduzir         = TagDecimal(nome='ValorDeduzir'         , tamanho=[1,  15, 1], decimais=[0, 2, 0], raiz='//ConsultaNFSe', obrigatorio=False)
     self.ValorTotal           = TagDecimal(nome='ValorTotal'           , tamanho=[1,  15, 1], decimais=[0, 2, 0], raiz='//ConsultaNFSe')
     self.Aliquota             = TagDecimal(nome='Aliquota'             , tamanho=[1,   6, 1], decimais=[0, 4, 2], raiz='//ConsultaNFSe')
示例#4
0
文件: soap_100.py 项目: wcreis/PySPED
 def __init__(self):
     super(CabecMsg, self).__init__()
     self.versao = TagDecimal(nome='cabecMsg',
                              codigo='',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.02',
                              raiz='//cabecMsg')
     self.versaoDados = TagDecimal(nome='versaoDados',
                                   codigo='A01',
                                   raiz='//cabecMsg',
                                   tamanho=[1, 4])
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'cabecMsg_v1.02.xsd'
示例#5
0
 def __init__(self):
     super(EnviCTe, self).__init__()
     self.versao  = TagDecimal(nome='enviCTe', codigo='AP02', propriedade='versao', namespace=NAMESPACE_CTE, valor='1.04', raiz='/')
     self.idLote  = TagInteiro(nome='idLote' , codigo='AP03', tamanho=[1, 15, 1], raiz='//enviCTe')
     self.CTe     = []
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'enviCte_v1.04.xsd'
示例#6
0
 def __init__(self):
     super(ConsSitNFe, self).__init__()
     self.versao = TagDecimal(nome='consSitNFe',
                              codigo='EP01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.07',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             codigo='EP03',
                             tamanho=[1, 1, 1],
                             raiz='//consSitNFe',
                             valor=2)
     self.xServ = TagCaracter(nome='xServ',
                              codigo='EP04',
                              tamanho=[9, 9],
                              raiz='//consSitNFe',
                              valor='CONSULTAR')
     self.chNFe = TagCaracter(nome='chNFe',
                              codigo='EP05',
                              tamanho=[44, 44],
                              raiz='//consSitNFe')
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'consSitNFe_v1.07.xsd'
示例#7
0
 def __init__(self):
     super(DownloadNFe, self).__init__()
     self.versao = TagDecimal(nome='downloadNFe',
                              codigo='JP01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.00',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             codigo='JP03',
                             tamanho=[1, 1, 1],
                             raiz='//downloadNFe',
                             valor=2)
     self.xServ = TagCaracter(nome='xServ',
                              codigo='JP04',
                              tamanho=[12, 12],
                              raiz='//downloadNFe',
                              valor='DOWNLOAD NFE')
     self.CNPJ = TagCaracter(nome='CNPJ',
                             codigo='JP05',
                             tamanho=[14, 14],
                             raiz='//downloadNFe')
     self.chNFe = []
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'downloadNFe_v1.00.xsd'
示例#8
0
 def __init__(self):
     super(RetDownloadNFe, self).__init__()
     self.versao = TagDecimal(nome='retDownloadNFe',
                              codigo='IR01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.00',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             codigo='IR03',
                             tamanho=[1, 1, 1],
                             raiz='//retDownloadNFe')
     self.verAplic = TagCaracter(nome='verAplic',
                                 codigo='IR04',
                                 tamanho=[1, 20],
                                 raiz='//retDownloadNFe')
     self.cStat = TagCaracter(nome='cStat',
                              codigo='IR05',
                              tamanho=[1, 3],
                              raiz='//retDownloadNFe')
     self.xMotivo = TagCaracter(nome='xMotivo',
                                codigo='IR06',
                                tamanho=[1, 255],
                                raiz='//retDownloadNFe')
     self.dhResp = TagDataHora(nome='dhResp',
                               codigo='IR07',
                               raiz='//retDownloadNFe')
     self.retNFe = []
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retDownloadNFe_v1.00.xsd'
示例#9
0
 def __init__(self):
     super(DistDFeInt, self).__init__()
     self.versao = TagDecimal(nome='distDFeInt',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.01',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             tamanho=[1, 1, 1],
                             raiz='//distDFeInt',
                             valor=2)
     self.cUFAutor = TagInteiro(nome='cUFAutor',
                                tamanho=[2, 2, 2],
                                raiz='//distDFeInt')
     self.CNPJ = TagCaracter(nome='CNPJ',
                             tamanho=[14, 14],
                             raiz='//distDFeInt',
                             obrigatorio=False)
     self.CPF = TagCaracter(nome='CPF',
                            tamanho=[11, 11],
                            raiz='//distDFeInt',
                            obrigatorio=False)
     self.distNSU = DistNSU()
     self.consNSU = ConsNSU()
     self.consChNFe = ConsChNFe()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'distDFeInt_v1.01.xsd'
示例#10
0
 def __init__(self):
     super(ConsStatServCTe, self).__init__()
     self.versao = TagDecimal(nome='consStatServCte',
                              codigo='FP01',
                              propriedade='versao',
                              namespace=NAMESPACE_CTE,
                              valor='1.04',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             codigo='FP03',
                             tamanho=[1, 1, 1],
                             raiz='//consStatServCte',
                             valor=2)
     self.cUF = TagInteiro(nome='cUF',
                           codigo='FP04',
                           tamanho=[2, 2, 2],
                           raiz='//consStatServCte',
                           valor=35)
     self.xServ = TagCaracter(nome='xServ',
                              codigo='FP05',
                              tamanho=[6, 6],
                              raiz='//consStatServCte',
                              valor='STATUS')
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'consStatServCte_v1.04.xsd'
示例#11
0
 def __init__(self):
     super(RetEnviNFe, self).__init__()
     self.versao   = TagDecimal(nome='retEnviNFe', codigo='AR02' , propriedade='versao', namespace=NAMESPACE_NFE, valor='2.00', raiz='/')
     self.dhRecbto = TagDataHora(nome='dhRecbto' , codigo='AR09'                        , raiz='//retEnviNFe')
     self.infRec   = InfRec()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retEnviNFe_v2.00.xsd'
示例#12
0
 def __init__(self):
     super(CancNFe, self).__init__()
     self.versao    = TagDecimal(nome='cancNFe', codigo='CP01', propriedade='versao', namespace=NAMESPACE_NFE, valor='1.07', raiz='/')
     self.infCanc   = InfCancEnviado()
     self.Signature = Signature()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'cancNFe_v1.07.xsd'
示例#13
0
    def __init__(self):
        super(RetDistDFeInt, self).__init__()
        self.versao = TagDecimal(nome='retDistDFeInt',
                                 propriedade='versao',
                                 namespace=NAMESPACE_NFE,
                                 valor='1.00',
                                 raiz='/')
        self.tpAmb = TagInteiro(nome='tpAmb',
                                tamanho=[1, 1, 1],
                                raiz='//retDistDFeInt',
                                valor=2)
        self.verAplic = TagCaracter(nome='verAplic',
                                    tamanho=[1, 20],
                                    raiz='//retDistDFeInt')
        self.cStat = TagCaracter(nome='cStat',
                                 tamanho=[3, 3, 3],
                                 raiz='//retDistDFeInt')
        self.xMotivo = TagCaracter(nome='xMotivo',
                                   tamanho=[1, 255],
                                   raiz='//retDistDFeInt')
        self.dhResp = TagDataHoraUTC(nome='dhResp', raiz='//retDistDFeInt')
        self.ultNSU = TagCaracter(nome='ultNSU',
                                  tamanho=[1, 15],
                                  raiz='//retDistDFeInt',
                                  obrigatorio=False)
        self.maxNSU = TagCaracter(nome='maxNSU',
                                  tamanho=[1, 15],
                                  raiz='//retDistDFeInt',
                                  obrigatorio=False)
        self.loteDistDFeInt = LoteDistDFeInt()
        self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                            ESQUEMA_ATUAL + '/')
        self.arquivo_esquema = 'retDistDFeInt_v1.00.xsd'

        self.chave = ''
示例#14
0
 def __init__(self):
     super(RetEnviNFe, self).__init__()
     self.versao = TagDecimal(nome='retEnviNFe',
                              codigo='AR02',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.10',
                              raiz='/')
     self.tpAmb = TagInteiro(nome='tpAmb',
                             codigo='AR03',
                             tamanho=[1, 1, 1],
                             raiz='//retEnviNFe')
     self.verAplic = TagCaracter(nome='verAplic',
                                 codigo='AR04',
                                 tamanho=[1, 20],
                                 raiz='//retEnviNFe')
     self.cStat = TagCaracter(nome='cStat',
                              codigo='AR05',
                              tamanho=[1, 3],
                              raiz='//retEnviNFe')
     self.xMotivo = TagCaracter(nome='xMotivo',
                                codigo='AR06',
                                tamanho=[1, 255],
                                raiz='//retEnviNFe')
     self.cUF = TagCaracter(nome='cUF',
                            codigo='AR06a',
                            tamanho=[2, 2, 2],
                            raiz='//retEnviNFe')
     self.infRec = InfRec()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retEnviNFe_v1.10.xsd'
示例#15
0
 def __init__(self):
     super(_Cabecalho, self).__init__()
     self.CodCidade = TagInteiro(nome='CodCidade',
                                 tamanho=[1, 10, 1],
                                 raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.CPFCNPJRemetente = TagCaracter(
         nome='CPFCNPJRemetente',
         tamanho=[11, 14],
         raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.RazaoSocialRemetente = TagCaracter(
         nome='RazaoSocialRemetente',
         tamanho=[1, 120],
         raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.transacao = TagBoolean(nome='transacao',
                                 raiz='//nfse:ReqEnvioLoteRPS/Cabecalho',
                                 valor=True)
     self.dtInicio = TagData(nome='dtInicio',
                             raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.dtFim = TagData(nome='dtFim',
                          raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.QtdRPS = TagInteiro(nome='QtdRPS',
                              tamanho=[1, 15, 1],
                              raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.ValorTotalServicos = TagDecimal(
         nome='ValorTotalServicos',
         tamanho=[1, 15, 1],
         decimais=[0, 2, 2],
         raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.ValorTotalDeducoes = TagDecimal(
         nome='ValorTotalDeducoes',
         tamanho=[1, 15, 1],
         decimais=[0, 2, 2],
         raiz='//nfse:ReqEnvioLoteRPS/Cabecalho')
     self.Versao = TagInteiro(nome='Versao',
                              tamanho=[1, 3, 1],
                              raiz='//nfse:ReqEnvioLoteRPS/Cabecalho',
                              valor=1)
     self.MetodoEnvio = TagCaracter(nome='MetodoEnvio',
                                    tamanho=[2, 3],
                                    raiz='//nfse:ReqEnvioLoteRPS/Cabecalho',
                                    valor='WS')
     self.VersaoComponente = TagCaracter(
         nome='VersaoComponente',
         tamanho=[0, 10],
         raiz='//nfse:ReqEnvioLoteRPS/Cabecalho',
         obrigatorio=False)
示例#16
0
 def __init__(self):
     super(ProtNFe, self).__init__()
     self.versao = TagDecimal(nome='protNFe',
                              codigo='PR02',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='2.00',
                              raiz='/')
示例#17
0
 def __init__(self):
     super(RetEvento, self).__init__()
     self.versao = TagDecimal(nome='retEvento',
                              codigo='HR10',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.00',
                              raiz='/')
     self.infEvento = InfEventoRecebido()
     self.Signature = Signature()
示例#18
0
 def __init__(self):
     super(ProtNFe, self).__init__()
     self.versao = TagDecimal(nome='protNFe',
                              codigo='PR02',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.10',
                              raiz='/')
     self.infProt = InfProt()
     self.Signature = Signature()
示例#19
0
 def __init__(self):
     super(DetEvento, self).__init__()
     self.versao = TagDecimal(nome='detEvento',
                              codigo='HP18',
                              propriedade='versao',
                              valor='1.00',
                              raiz='/')
     self.descEvento = TagCaracter(nome='descEvento',
                                   codigo='HP19',
                                   tamanho=[5, 60, 5],
                                   raiz='//detEvento')
示例#20
0
 def __init__(self):
     super(ProcCancNFe, self).__init__()
     #
     # Atenção --- a tag procCancNFe tem que começar com letra minúscula, para
     # poder validar no XSD.
     #
     self.versao = TagDecimal(nome='procCancNFe', propriedade='versao', namespace=NAMESPACE_NFE, valor='1.07', raiz='/')
     self.cancNFe = CancNFe()
     self.retCancNFe = RetCancNFe()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema', ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'procCancNFe_v1.07.xsd'
示例#21
0
 def __init__(self):
     super(RetConsStatServ, self).__init__()
     self.versao = TagDecimal(nome='retConsStatServ',
                              codigo='FR01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='2.00',
                              raiz='/')
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retConsStatServ_v2.00.xsd'
示例#22
0
 def __init__(self):
     super(ConsReciNFe, self).__init__()
     self.versao = TagDecimal(nome='consReciNFe',
                              codigo='BP02',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='2.00',
                              raiz='/')
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'consReciNFe_v2.00.xsd'
示例#23
0
 def __init__(self):
     super(ProcEvento, self).__init__()
     self.versao = TagDecimal(nome='procEventoNFe',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.00',
                              raiz='/')
     self.evento = Evento()
     self.retEvento = RetEvento()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'procEventoNFe_v1.00.xsd'
示例#24
0
 def __init__(self):
     super(ProcCTe, self).__init__()
     self.versao = TagDecimal(nome='cteProc',
                              propriedade='versao',
                              namespace=NAMESPACE_CTE,
                              valor='1.04',
                              raiz='/')
     self.CTe = CTe()
     self.protCTe = ProtCTe()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'procCTe_v1.04.xsd'
示例#25
0
 def __init__(self):
     super(RetConsCad, self).__init__()
     self.versao = TagDecimal(nome='retConsCad',
                              codigo='GR01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.01',
                              raiz='/')
     self.infCons = InfConsRecebido()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retConsCad_v1.01.xsd'
示例#26
0
 def __init__(self):
     super(RetCancNFe, self).__init__()
     self.versao = TagDecimal(nome='retCancNFe',
                              codigo='CR01',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='2.00',
                              raiz='/')
     self.infCanc = InfCancRecebido()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retCancNFe_v2.00.xsd'
示例#27
0
 def __init__(self):
     super(Item, self).__init__()
     self.DiscriminacaoServico = TagCaracter(nome='DiscriminacaoServico',
                                             tamanho=[1, 80],
                                             raiz='//Item')
     self.Quantidade = TagDecimal(nome='Quantidade',
                                  tamanho=[1, 10, 1],
                                  decimais=[0, 4, 4],
                                  raiz='//Item')
     self.ValorUnitario = TagDecimal(nome='ValorUnitario',
                                     tamanho=[1, 15, 1],
                                     decimais=[0, 4, 4],
                                     raiz='//Item')
     self.ValorTotal = TagDecimal(nome='ValorTotal',
                                  tamanho=[1, 15, 1],
                                  decimais=[0, 2, 2],
                                  raiz='//Item')
     self.Tributavel = TagCaracter(nome='Tributavel',
                                   tamanho=[1, 1],
                                   raiz='//Item',
                                   obrigatorio=False)
示例#28
0
 def __init__(self):
     super(RetConsSitCTe, self).__init__()
     self.versao     = TagDecimal(nome='retConsSitCTe', codigo='ER01', propriedade='versao', namespace=NAMESPACE_CTE, valor='1.04', raiz='/')
     self.tpAmb      = TagInteiro(nome='tpAmb'        , codigo='ER03' , tamanho=[1,   1, 1], raiz='//retConsSitCTe')
     self.verAplic   = TagCaracter(nome='verAplic'    , codigo='ER04' , tamanho=[1,  20]   , raiz='//retConsSitCTe')
     self.cStat      = TagCaracter(nome='cStat'       , codigo='ER05' , tamanho=[1,   3]   , raiz='//retConsSitCTe')
     self.xMotivo    = TagCaracter(nome='xMotivo'     , codigo='ER06' , tamanho=[1, 2000]  , raiz='//retConsSitCTe')
     self.cUF        = TagInteiro(nome='cUF'          , codigo='ER07' , tamanho=[2,   2, 2], raiz='//retConsSitCTe')
     self.protCTe    = None
     self.retCancCTe = None
     self.caminho_esquema = os.path.join(DIRNAME, 'schema', ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'retConsSitCte_v1.04.xsd'
示例#29
0
 def __init__(self):
     super(ProcNFe, self).__init__()
     self.versao = TagDecimal(nome='nfeProc',
                              propriedade='versao',
                              namespace=NAMESPACE_NFE,
                              valor='1.10',
                              raiz='/')
     self.NFe = NFe()
     self.protNFe = ProtNFe()
     self.caminho_esquema = os.path.join(DIRNAME, 'schema/',
                                         ESQUEMA_ATUAL + '/')
     self.arquivo_esquema = 'procNFe_v1.10.xsd'
示例#30
0
 def __init__(self):
     super(NFeCabecMsg, self).__init__()
     self.webservice = ''
     self.cUF = TagInteiro(nome='cUF',
                           codigo='',
                           raiz='//cabecMsg',
                           tamanho=[2, 2],
                           valor=35)
     self.versaoDados = TagDecimal(nome='versaoDados',
                                   codigo='',
                                   raiz='//cabecMsg',
                                   tamanho=[1, 4],
                                   valor='2.00')
示例#31
0
    def __init__(self):
        super(RPS, self).__init__()
        self.Id = TagCaracter(nome='RPS', propriedade='Id', raiz=u'//', obrigatorio=False)
        self.Assinatura                  = TagCaracter(nome='Assinatura'                 , tamanho=[ 1, 2000]   , raiz='//RPS')
        self.InscricaoMunicipalPrestador = TagCaracter(nome='InscricaoMunicipalPrestador', tamanho=[ 6,   11]   , raiz='//RPS')
        self.RazaoSocialPrestador        = TagCaracter(nome='RazaoSocialPrestador'       , tamanho=[ 1,  120]   , raiz='//RPS')
        self.TipoRPS                     = TagCaracter(nome='TipoRPS'                    , tamanho=[ 1,   20]   , raiz='//RPS', valor='RPS')
        self.SerieRPS                    = TagCaracter(nome='SerieRPS'                   , tamanho=[ 2,    2]   , raiz='//RPS', valor='NF')
        self.NumeroRPS                   = TagInteiro(nome='NumeroRPS'                   , tamanho=[ 1,   12, 1], raiz='//RPS')
        self.DataEmissaoRPS              = TagDataHora(nome='DataEmissaoRPS'                                    , raiz='//RPS')
        self.SituacaoRPS                 = TagCaracter(nome='SituacaoRPS'                , tamanho=[ 1,    1]   , raiz='//RPS', valor='N')
        self.SerieRPSSubstituido         = TagCaracter(nome='SerieRPSSubstituido'        , tamanho=[ 2,    2]   , raiz='//RPS', obrigatorio=False)
        self.NumeroRPSSubstituido        = TagInteiro(nome='NumeroRPSSubstituido'        , tamanho=[ 1,   12, 1], raiz='//RPS', obrigatorio=False)
        self.NumeroNFSeSubstituida       = TagInteiro(nome='NumeroNFSeSubstituida'       , tamanho=[ 1,   12, 1], raiz='//RPS', obrigatorio=False)
        self.DataEmissaoNFSeSubstituida  = TagData(nome='DataEmissaoNFSeSubstituida'                        , raiz='//RPS', obrigatorio=False)
        self.SeriePrestacao              = TagCaracter(nome='SeriePrestacao'             , tamanho=[ 2,    2]   , raiz='//RPS')
        self.InscricaoMunicipalTomador   = TagCaracter(nome='InscricaoMunicipalTomador'  , tamanho=[ 6,   11]   , raiz='//RPS')
        self.CPFCNPJTomador              = TagCaracter(nome='CPFCNPJTomador'             , tamanho=[11,   14]   , raiz='//RPS')
        self.RazaoSocialTomador          = TagCaracter(nome='RazaoSocialTomador'         , tamanho=[ 1,  120]   , raiz='//RPS')
        self.DocTomadorEstrangeiro       = TagCaracter(nome='DocTomadorEstrangeiro'      , tamanho=[ 0,   20]   , raiz='//RPS', obrigatorio=False)
        self.TipoLogradouroTomador       = TagCaracter(nome='TipoLogradouroTomador'      , tamanho=[ 0,   10]   , raiz='//RPS')
        self.LogradouroTomador           = TagCaracter(nome='LogradouroTomador'          , tamanho=[ 0,   50]   , raiz='//RPS')
        self.NumeroEnderecoTomador       = TagCaracter(nome='NumeroEnderecoTomador'      , tamanho=[ 0,    9]   , raiz='//RPS')
        self.ComplementoEnderecoTomador  = TagCaracter(nome='ComplementoEnderecoTomador' , tamanho=[ 0,   30]   , raiz='//RPS', obrigatorio=False)
        self.TipoBairroTomador           = TagCaracter(nome='TipoBairroTomador'          , tamanho=[ 0,   10]   , raiz='//RPS')
        self.BairroTomador               = TagCaracter(nome='BairroTomador'              , tamanho=[ 0,   50]   , raiz='//RPS')
        self.CidadeTomador               = TagInteiro(nome='CidadeTomador'               , tamanho=[ 1,   10, 1], raiz='//RPS')
        self.CidadeTomadorDescricao      = TagCaracter(nome='CidadeTomadorDescricao'     , tamanho=[ 0,   50]   , raiz='//RPS')
        self.CEPTomador                  = TagCaracter(nome='CEPTomador'                 , tamanho=[ 8,    8]   , raiz='//RPS')
        self.EmailTomador                = TagCaracter(nome='EmailTomador'               , tamanho=[ 0,   60]   , raiz='//RPS')
        self.CodigoAtividade             = TagCaracter(nome='CodigoAtividade'            , tamanho=[ 9,    9]   , raiz='//RPS')
        self.AliquotaAtividade           = TagDecimal(nome='AliquotaAtividade'           , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.TipoRecolhimento            = TagCaracter(nome='TipoRecolhimento'           , tamanho=[ 1,    1]   , raiz='//RPS')
        self.MunicipioPrestacao          = TagInteiro(nome='MunicipioPrestacao'          , tamanho=[ 1,   10, 1], raiz='//RPS')
        self.MunicipioPrestacaoDescricao = TagCaracter(nome='MunicipioPrestacaoDescricao', tamanho=[ 0,   30]   , raiz='//RPS')
        self.Operacao                    = TagCaracter(nome='Operacao'                   , tamanho=[ 1,    1]   , raiz='//RPS')
        self.Tributacao                  = TagCaracter(nome='Tributacao'                 , tamanho=[ 1,    1]   , raiz='//RPS')
        self.ValorPIS                    = TagDecimal(nome='ValorPIS'                    , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorCOFINS                 = TagDecimal(nome='ValorCOFINS'                 , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorINSS                   = TagDecimal(nome='ValorINSS'                   , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorIR                     = TagDecimal(nome='ValorIR'                     , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorCSLL                   = TagDecimal(nome='ValorCSLL'                   , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaPIS                 = TagDecimal(nome='AliquotaPIS'                 , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaCOFINS              = TagDecimal(nome='AliquotaCOFINS'              , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaINSS                = TagDecimal(nome='AliquotaINSS'                , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaIR                  = TagDecimal(nome='AliquotaIR'                  , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaCSLL                = TagDecimal(nome='AliquotaCSLL'                , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.DescricaoRPS                = TagCaracter(nome='DescricaoRPS'               , tamanho=[ 0, 1500]   , raiz='//RPS')
        self.DDDPrestador                = TagInteiro(nome='DDDPrestador'                , tamanho=[ 0,    3, 0], raiz='//RPS')
        self.TelefonePrestador           = TagInteiro(nome='TelefonePrestador'           , tamanho=[ 0,    8, 0], raiz='//RPS')
        self.DDDTomador                  = TagInteiro(nome='DDDTomador'                  , tamanho=[ 0,    3, 0], raiz='//RPS')
        self.TelefoneTomador             = TagInteiro(nome='TelefoneTomador'             , tamanho=[ 0,    8, 0], raiz='//RPS')
        self.MotCancelamento             = TagCaracter(nome='MotCancelamento'            , tamanho=[ 0,   80]   , raiz='//RPS', obrigatorio=False)
        self.CPFCNPJIntermediario        = TagCaracter(nome='CPFCNPJIntermediario'       , tamanho=[11,   14]   , raiz='//RPS', obrigatorio=False)
        self.Deducoes = []
        self.Itens = []

        #
        # Tags usadas somente para a impressão, não fazem parte do XML a ser gerado
        #
        self.ValorTotalRPS = TagDecimal(nome='ValorTotalRPS', tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.ValorDeducoes = TagDecimal(nome='ValorDeducoes', tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.BaseCalculo   = TagDecimal(nome='BaseCalculo'  , tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.ValorISS      = TagDecimal(nome='ValorISS'     , tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.Informacoes   = TagCaracter(nome='Informacoes' , tamanho=[ 0, 5000])
        self.Informacoes.valor = 'Este Recibo Provisório de Serviços - RPS não é válido como documento fiscal. O prestador do serviço, no prazo de até 5 (cinco) dias corridos da emissão deste RPS, deverá substituí-lo por uma Nota Fiscal de Serviços Eletrônica - NFS-e.'
示例#32
0
class RPS(XMLNFe):
    def __init__(self):
        super(RPS, self).__init__()
        self.Id = TagCaracter(nome='RPS', propriedade='Id', raiz=u'//', obrigatorio=False)
        self.Assinatura                  = TagCaracter(nome='Assinatura'                 , tamanho=[ 1, 2000]   , raiz='//RPS')
        self.InscricaoMunicipalPrestador = TagCaracter(nome='InscricaoMunicipalPrestador', tamanho=[ 6,   11]   , raiz='//RPS')
        self.RazaoSocialPrestador        = TagCaracter(nome='RazaoSocialPrestador'       , tamanho=[ 1,  120]   , raiz='//RPS')
        self.TipoRPS                     = TagCaracter(nome='TipoRPS'                    , tamanho=[ 1,   20]   , raiz='//RPS', valor='RPS')
        self.SerieRPS                    = TagCaracter(nome='SerieRPS'                   , tamanho=[ 2,    2]   , raiz='//RPS', valor='NF')
        self.NumeroRPS                   = TagInteiro(nome='NumeroRPS'                   , tamanho=[ 1,   12, 1], raiz='//RPS')
        self.DataEmissaoRPS              = TagDataHora(nome='DataEmissaoRPS'                                    , raiz='//RPS')
        self.SituacaoRPS                 = TagCaracter(nome='SituacaoRPS'                , tamanho=[ 1,    1]   , raiz='//RPS', valor='N')
        self.SerieRPSSubstituido         = TagCaracter(nome='SerieRPSSubstituido'        , tamanho=[ 2,    2]   , raiz='//RPS', obrigatorio=False)
        self.NumeroRPSSubstituido        = TagInteiro(nome='NumeroRPSSubstituido'        , tamanho=[ 1,   12, 1], raiz='//RPS', obrigatorio=False)
        self.NumeroNFSeSubstituida       = TagInteiro(nome='NumeroNFSeSubstituida'       , tamanho=[ 1,   12, 1], raiz='//RPS', obrigatorio=False)
        self.DataEmissaoNFSeSubstituida  = TagData(nome='DataEmissaoNFSeSubstituida'                        , raiz='//RPS', obrigatorio=False)
        self.SeriePrestacao              = TagCaracter(nome='SeriePrestacao'             , tamanho=[ 2,    2]   , raiz='//RPS')
        self.InscricaoMunicipalTomador   = TagCaracter(nome='InscricaoMunicipalTomador'  , tamanho=[ 6,   11]   , raiz='//RPS')
        self.CPFCNPJTomador              = TagCaracter(nome='CPFCNPJTomador'             , tamanho=[11,   14]   , raiz='//RPS')
        self.RazaoSocialTomador          = TagCaracter(nome='RazaoSocialTomador'         , tamanho=[ 1,  120]   , raiz='//RPS')
        self.DocTomadorEstrangeiro       = TagCaracter(nome='DocTomadorEstrangeiro'      , tamanho=[ 0,   20]   , raiz='//RPS', obrigatorio=False)
        self.TipoLogradouroTomador       = TagCaracter(nome='TipoLogradouroTomador'      , tamanho=[ 0,   10]   , raiz='//RPS')
        self.LogradouroTomador           = TagCaracter(nome='LogradouroTomador'          , tamanho=[ 0,   50]   , raiz='//RPS')
        self.NumeroEnderecoTomador       = TagCaracter(nome='NumeroEnderecoTomador'      , tamanho=[ 0,    9]   , raiz='//RPS')
        self.ComplementoEnderecoTomador  = TagCaracter(nome='ComplementoEnderecoTomador' , tamanho=[ 0,   30]   , raiz='//RPS', obrigatorio=False)
        self.TipoBairroTomador           = TagCaracter(nome='TipoBairroTomador'          , tamanho=[ 0,   10]   , raiz='//RPS')
        self.BairroTomador               = TagCaracter(nome='BairroTomador'              , tamanho=[ 0,   50]   , raiz='//RPS')
        self.CidadeTomador               = TagInteiro(nome='CidadeTomador'               , tamanho=[ 1,   10, 1], raiz='//RPS')
        self.CidadeTomadorDescricao      = TagCaracter(nome='CidadeTomadorDescricao'     , tamanho=[ 0,   50]   , raiz='//RPS')
        self.CEPTomador                  = TagCaracter(nome='CEPTomador'                 , tamanho=[ 8,    8]   , raiz='//RPS')
        self.EmailTomador                = TagCaracter(nome='EmailTomador'               , tamanho=[ 0,   60]   , raiz='//RPS')
        self.CodigoAtividade             = TagCaracter(nome='CodigoAtividade'            , tamanho=[ 9,    9]   , raiz='//RPS')
        self.AliquotaAtividade           = TagDecimal(nome='AliquotaAtividade'           , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.TipoRecolhimento            = TagCaracter(nome='TipoRecolhimento'           , tamanho=[ 1,    1]   , raiz='//RPS')
        self.MunicipioPrestacao          = TagInteiro(nome='MunicipioPrestacao'          , tamanho=[ 1,   10, 1], raiz='//RPS')
        self.MunicipioPrestacaoDescricao = TagCaracter(nome='MunicipioPrestacaoDescricao', tamanho=[ 0,   30]   , raiz='//RPS')
        self.Operacao                    = TagCaracter(nome='Operacao'                   , tamanho=[ 1,    1]   , raiz='//RPS')
        self.Tributacao                  = TagCaracter(nome='Tributacao'                 , tamanho=[ 1,    1]   , raiz='//RPS')
        self.ValorPIS                    = TagDecimal(nome='ValorPIS'                    , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorCOFINS                 = TagDecimal(nome='ValorCOFINS'                 , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorINSS                   = TagDecimal(nome='ValorINSS'                   , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorIR                     = TagDecimal(nome='ValorIR'                     , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.ValorCSLL                   = TagDecimal(nome='ValorCSLL'                   , tamanho=[ 1,   15, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaPIS                 = TagDecimal(nome='AliquotaPIS'                 , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaCOFINS              = TagDecimal(nome='AliquotaCOFINS'              , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaINSS                = TagDecimal(nome='AliquotaINSS'                , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaIR                  = TagDecimal(nome='AliquotaIR'                  , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.AliquotaCSLL                = TagDecimal(nome='AliquotaCSLL'                , tamanho=[ 1,    5, 1], decimais=[0, 2, 2], raiz='//RPS')
        self.DescricaoRPS                = TagCaracter(nome='DescricaoRPS'               , tamanho=[ 0, 1500]   , raiz='//RPS')
        self.DDDPrestador                = TagInteiro(nome='DDDPrestador'                , tamanho=[ 0,    3, 0], raiz='//RPS')
        self.TelefonePrestador           = TagInteiro(nome='TelefonePrestador'           , tamanho=[ 0,    8, 0], raiz='//RPS')
        self.DDDTomador                  = TagInteiro(nome='DDDTomador'                  , tamanho=[ 0,    3, 0], raiz='//RPS')
        self.TelefoneTomador             = TagInteiro(nome='TelefoneTomador'             , tamanho=[ 0,    8, 0], raiz='//RPS')
        self.MotCancelamento             = TagCaracter(nome='MotCancelamento'            , tamanho=[ 0,   80]   , raiz='//RPS', obrigatorio=False)
        self.CPFCNPJIntermediario        = TagCaracter(nome='CPFCNPJIntermediario'       , tamanho=[11,   14]   , raiz='//RPS', obrigatorio=False)
        self.Deducoes = []
        self.Itens = []

        #
        # Tags usadas somente para a impressão, não fazem parte do XML a ser gerado
        #
        self.ValorTotalRPS = TagDecimal(nome='ValorTotalRPS', tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.ValorDeducoes = TagDecimal(nome='ValorDeducoes', tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.BaseCalculo   = TagDecimal(nome='BaseCalculo'  , tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.ValorISS      = TagDecimal(nome='ValorISS'     , tamanho=[ 1,   15, 1], decimais=[0, 2, 2])
        self.Informacoes   = TagCaracter(nome='Informacoes' , tamanho=[ 0, 5000])
        self.Informacoes.valor = 'Este Recibo Provisório de Serviços - RPS não é válido como documento fiscal. O prestador do serviço, no prazo de até 5 (cinco) dias corridos da emissão deste RPS, deverá substituí-lo por uma Nota Fiscal de Serviços Eletrônica - NFS-e.'


    def gera_assinatura(self):
        '''
        Gera o hash sha1 para a tag Assinatura
        '''
        texto = self.InscricaoMunicipalPrestador.valor.zfill(11)
        texto += self.SerieRPS.valor.ljust(5)
        texto += unicode(self.NumeroRPS.valor).zfill(12)
        texto += self.DataEmissaoRPS.valor.strftime(r'%Y%m%d')
        texto += self.Tributacao.valor.ljust(2)
        texto += self.SituacaoRPS.valor

        if self.TipoRecolhimento.valor == 'A':
            texto += 'N'
        else:
            texto += 'S'

        valor_servicos = D(0)
        base_calculo = D(0)
        valor_deducoes = D(0)

        for s in self.Itens:
            valor_servicos += s.ValorTotal.valor

            if s.Tributavel.valor == 'S':
                base_calculo += s.ValorTotal.valor

        for d in self.Deducoes:
            valor_deducoes += d.ValorDeduzir.valor

        self.ValorTotalRPS.valor = valor_servicos
        self.ValorDeducoes.valor = valor_deducoes
        self.BaseCalculo.valor = base_calculo - valor_deducoes
        self.ValorISS.valor = (self.BaseCalculo.valor * self.AliquotaAtividade.valor / 100).quantize(D('0.01'))

        texto += unicode(((valor_servicos - valor_deducoes) * 100).quantize(1)).zfill(15)
        texto += unicode((valor_deducoes * 100).quantize(1)).zfill(15)
        texto += self.CodigoAtividade.valor.zfill(10)
        texto += self.CPFCNPJTomador.valor.zfill(14)

        print(texto)

        gerador_sha1 = sha1()
        gerador_sha1.update(texto)
        self.Assinatura.valor = gerador_sha1.hexdigest()

    @somente_ascii
    def get_xml(self):
        xml = XMLNFe.get_xml(self)

        if self.Id.valor.strip() == '':
            xml += '<RPS>'
        else:
            xml += self.Id.xml

        if self.Assinatura.valor.strip() == '':
            self.gera_assinatura()

        xml += self.Assinatura.xml
        xml += self.InscricaoMunicipalPrestador.xml
        xml += self.RazaoSocialPrestador.xml
        xml += self.TipoRPS.xml
        xml += self.SerieRPS.xml
        xml += self.NumeroRPS.xml
        xml += self.DataEmissaoRPS.xml
        xml += self.SituacaoRPS.xml
        xml += self.SerieRPSSubstituido.xml
        xml += self.NumeroRPSSubstituido.xml
        xml += self.NumeroNFSeSubstituida.xml
        xml += self.DataEmissaoNFSeSubstituida.xml
        xml += self.SeriePrestacao.xml
        xml += self.InscricaoMunicipalTomador.xml
        xml += self.CPFCNPJTomador.xml
        xml += self.RazaoSocialTomador.xml
        xml += self.DocTomadorEstrangeiro.xml
        xml += self.TipoLogradouroTomador.xml
        xml += self.LogradouroTomador.xml
        xml += self.NumeroEnderecoTomador.xml
        xml += self.ComplementoEnderecoTomador.xml
        xml += self.TipoBairroTomador.xml
        xml += self.BairroTomador.xml
        xml += self.CidadeTomador.xml
        xml += self.CidadeTomadorDescricao.xml
        xml += self.CEPTomador.xml
        xml += self.EmailTomador.xml
        xml += self.CodigoAtividade.xml
        xml += self.AliquotaAtividade.xml
        xml += self.TipoRecolhimento.xml
        xml += self.MunicipioPrestacao.xml
        xml += self.MunicipioPrestacaoDescricao.xml
        xml += self.Operacao.xml
        xml += self.Tributacao.xml
        xml += self.ValorPIS.xml
        xml += self.ValorCOFINS.xml
        xml += self.ValorINSS.xml
        xml += self.ValorIR.xml
        xml += self.ValorCSLL.xml
        xml += self.AliquotaPIS.xml
        xml += self.AliquotaCOFINS.xml
        xml += self.AliquotaINSS.xml
        xml += self.AliquotaIR.xml
        xml += self.AliquotaCSLL.xml
        xml += self.DescricaoRPS.xml
        xml += self.DDDPrestador.xml
        xml += self.TelefonePrestador.xml
        xml += self.DDDTomador.xml
        xml += self.TelefoneTomador.xml
        xml += self.MotCancelamento.xml
        xml += self.CPFCNPJIntermediario.xml

        if len(self.Deducoes):
            xml += '<Deducoes>'

            for d in self.Deducoes:
                xml += d.xml

            xml += '</Deducoes>'

        if len(self.Itens):
            xml += '<Itens>'

            for i in self.Itens:
                xml += i.xml

            xml += '</Itens>'

        xml += '</RPS>'
        return xml

    def set_xml(self, arquivo):
        if self._le_xml(arquivo):
            self.Id.xml                          = arquivo
            self.Assinatura.xml                  = arquivo
            self.InscricaoMunicipalPrestador.xml = arquivo
            self.RazaoSocialPrestador.xml        = arquivo
            self.TipoRPS.xml                     = arquivo
            self.SerieRPS.xml                    = arquivo
            self.NumeroRPS.xml                   = arquivo
            self.DataEmissaoRPS.xml              = arquivo
            self.SituacaoRPS.xml                 = arquivo
            self.SerieRPSSubstituido.xml         = arquivo
            self.NumeroRPSSubstituido.xml        = arquivo
            self.NumeroNFSeSubstituida.xml       = arquivo
            self.DataEmissaoNFSeSubstituida.xml  = arquivo
            self.SeriePrestacao.xml              = arquivo
            self.InscricaoMunicipalTomador.xml   = arquivo
            self.CPFCNPJTomador.xml              = arquivo
            self.RazaoSocialTomador.xml          = arquivo
            self.DocTomadorEstrangeiro.xml       = arquivo
            self.TipoLogradouroTomador.xml       = arquivo
            self.LogradouroTomador.xml           = arquivo
            self.NumeroEnderecoTomador.xml       = arquivo
            self.ComplementoEnderecoTomador.xml  = arquivo
            self.TipoBairroTomador.xml           = arquivo
            self.BairroTomador.xml               = arquivo
            self.CidadeTomador.xml               = arquivo
            self.CidadeTomadorDescricao.xml      = arquivo
            self.CEPTomador.xml                  = arquivo
            self.EmailTomador.xml                = arquivo
            self.CodigoAtividade.xml             = arquivo
            self.AliquotaAtividade.xml           = arquivo
            self.TipoRecolhimento.xml            = arquivo
            self.MunicipioPrestacao.xml          = arquivo
            self.MunicipioPrestacaoDescricao.xml = arquivo
            self.Operacao.xml                    = arquivo
            self.Tributacao.xml                  = arquivo
            self.ValorPIS.xml                    = arquivo
            self.ValorCOFINS.xml                 = arquivo
            self.ValorINSS.xml                   = arquivo
            self.ValorIR.xml                     = arquivo
            self.ValorCSLL.xml                   = arquivo
            self.AliquotaPIS.xml                 = arquivo
            self.AliquotaCOFINS.xml              = arquivo
            self.AliquotaINSS.xml                = arquivo
            self.AliquotaIR.xml                  = arquivo
            self.AliquotaCSLL.xml                = arquivo
            self.DescricaoRPS.xml                = arquivo
            self.DDDPrestador.xml                = arquivo
            self.TelefonePrestador.xml           = arquivo
            self.DDDTomador.xml                  = arquivo
            self.TelefoneTomador.xml             = arquivo
            self.MotCancelamento.xml             = arquivo
            self.CPFCNPJIntermediario.xml        = arquivo

            deducoes = self._le_nohs('//RPS/Deducoes/Deducao')
            self.Deducoes = []
            if deducoes is not None:
                self.Deducoes = [Deducao() for d in deducoes]
                for i in range(len(deducoes)):
                    self.Deducoes[i].xml = deducoes[i]

            itens = self._le_nohs('//RPS/Itens/Item')
            self.Itens = []
            if itens is not None:
                self.Itens = [Item() for i in itens]
                for i in range(len(itens)):
                    self.Itens[i].xml = itens[i]

    xml = property(get_xml, set_xml)

    #
    # Funções para formatar campos para a impressão do RPS
    #

    def numero_formatado(self):
        num = unicode(self.NumeroRPS.valor).zfill(12)
        num_formatado = '.'.join((num[0:3], num[3:6], num[6:9], num[9:12]))
        return num_formatado

    def _formata_cpf(self, cpf):
        if not len(cpf.strip()):
            return u''

        formatado = cpf[0:3] + u'.' + cpf[3:6] + u'.' + cpf[6:9] + u'-' + cpf[9:11]
        return formatado

    def _formata_cnpj(self, cnpj):
        if not len(cnpj.strip()):
            return u''

        formatado = cnpj[0:2] + u'.' + cnpj[2:5] + u'.' + cnpj[5:8] + u'/' + cnpj[8:12] + u'-' + cnpj[12:14]
        return formatado

    def cnpj_tomador_formatado(self):
        if len(self.CPFCNPJTomador.valor) == 11:
            return self._formata_cpf(self.CPFCNPJTomador.valor)
        else:
            return self._formata_cnpj(self.CPFCNPJTomador.valor)

    def endereco_tomador_formatado(self):
        end = ''

        if len(self.TipoLogradouroTomador.valor.strip()):
            end = self.TipoLogradouroTomador.valor.strip() + ' '

        end += self.LogradouroTomador.valor

        if len(self.NumeroEnderecoTomador.valor.strip()):
            end += ', ' + self.NumeroEnderecoTomador.valor

        if len(self.ComplementoEnderecoTomador.valor.strip()):
            end += ' - ' + self.ComplementoEnderecoTomador.valor

        if len(self.TipoBairroTomador.valor.strip()):
            end += ' - ' + self.TipoBairroTomador.valor + ' ' + self.BairroTomador.valor
        else:
            end += ' - ' + self.BairroTomador.valor

        end += ' - ' + self.CEPTomador.valor[0:5] + '-' + self.CEPTomador.valor[5:]

        return end

    def descricao_formatada(self):
        return self.DescricaoRPS.valor.replace('|', '<br />')

    def informacoes_formatadas(self):
        return self.Informacoes.valor.replace('|', '<br />')

    def _formata_aliquota_federal(self, descricao, aliquota):
        return descricao + ' (' + aliquota.rjust(5) + '%)'

    def aliquota_pis_formatada(self):
        return self._formata_aliquota_federal('PIS', self.AliquotaPIS.formato_danfe())

    def aliquota_cofins_formatada(self):
        return self._formata_aliquota_federal('COFINS', self.AliquotaCOFINS.formato_danfe())

    def aliquota_inss_formatada(self):
        return self._formata_aliquota_federal('INSS', self.AliquotaINSS.formato_danfe())

    def aliquota_ir_formatada(self):
        return self._formata_aliquota_federal('IR', self.AliquotaIR.formato_danfe())

    def aliquota_csll_formatada(self):
        return self._formata_aliquota_federal('CSLL', self.AliquotaCSLL.formato_danfe())