Odoo Help


button dont work when change the state of a group on a notebook

Francisco Castro
on 5/12/14, 2:59 PM 1,439 views

Hi guys I'm changing a module to openerp 7 but I dont know whats going on here....


class wizard_saft_comunica(osv.osv_memory):

_name = "wizard.l10n_pt.saft.comunica"
_inherit = "wizard.l10n_pt.saft"

def act_getfile_comunica(self, cr, uid, ids, context=None):
    logger.notifyChannel("saft_comunica :", netsvc.LOG_INFO, ' A exportar o ficheiro xml Resumido SAFT ****')

    self.this = self.browse(cr, uid, ids[0])
    #Namespaces declaration
    self.xmlns = "urn:OECD:StandardAuditFile-Tax:PT_1.03_01"
    attrib={ 'xmlns': self.xmlns,
             #'xsi:noNamespaceSchemaLocation' : "saft-pt.xsd"

    root = et.Element("AuditFile", attrib = attrib )
    header = et.SubElement(root, 'Header', xmlns=self.xmlns)
    header.tail = '\n'

    # le o ano fiscal na base de dados
    fy_obj = self.pool.get('account.fiscalyear')
    fy = fy_obj.browse(cr, uid, self.this.year.id)

    for wiz in self.browse(cr, uid, ids, context=context):
        portaria = wiz.portaria
        if wiz.filtro == 'fiscal':
            # le o ano fiscal na base de dados
            fy_obj = self.pool.get('account.fiscalyear')
            fy = fy_obj.browse(cr, uid, self.this.year.id)
            data_ini = fy.date_start
            data_fim = fy.date_stop
            codig = fy.code

        if wiz.filtro =='data':
            fy_obj = self.pool.get('account.fiscalyear')
            fy = fy_obj.browse(cr, uid, self.this.year.id)
            data_ini = wiz.data_ini
            data_fim = wiz.data_fim
            codig = self._get_period(cr, uid,data_ini)

    root.append( self._get_masters_comunica(cr, uid, data_ini, data_fim, portaria) )

    #entries : exclui na facturação
    if self.this.tipo in ('C', 'I'):
        root.append( self._get_entries(cr, uid) )
    #for el in (header, master, entries) :
    #    el.tail = '\n'

    et.SubElement(header, 'AuditFileVersion').text='1.03_01'

        SELECT p.id, p.vat, p.name, p.reg_com, p.conservatoria, p.website
        FROM res_partner p
        WHERE p.id = 1 """  )

    p_id, vat, name, registo, conserv, web = cr.fetchone()

    if not registo:
        registo = vat[2:]

    if not conserv:
        conserv = ''

    for el, txt in zip(('CompanyID', 'TaxRegistrationNumber', 'TaxAccountingBasis',  'CompanyName'),
                       (str(conserv)+' '+str(registo), vat, self.this.tipo, name )):

        if el == 'CompanyID' and not conserv:
                txt = str(registo)

        if el == 'CompanyName':
                txt = txt[:60]

        if el == 'TaxRegistrationNumber':
            txt = txt[2:]

        et.SubElement(header, el).text=txt

    # todo: Falta inserir o BusinessName (1.6), após o CompanyName  opcional
    compAddress, phone_fax_mail = self.getAddress(cr, uid, 'CompanyAddress', p_id)

    header.append( compAddress )

    #### gera o header propriamente
    tags = (    ('FiscalYear',      codig,),
                ('StartDate',       data_ini),
                ('EndDate',         data_fim),
                ('CurrencyCode',    'EUR'),
                ('DateCreated',     '%s' %str(datetime.date.today()) ),
                ('TaxEntity',       'Global'),
                ('ProductCompanyTaxID',  productCompanyTaxID),   
                ('SoftwareCertificateNumber', softCertNr),
                ('ProductID',        productID),
                ('ProductVersion',   productVersion),
                ('HeaderComment',    headerComment),
    for tag, valor in tags:
        if valor is None :
        et.SubElement(header, tag).text=valor
    for element in phone_fax_mail.getchildren():
        header.append( element )
    del phone_fax_mail
    if web:
        et.SubElement(header,'Website').text = unicode(web)
    for element in header.getchildren():
        element.tail = '\n'

    #SourceDocumentos se tipo não é 'C'
    if self.this.tipo != 'C' :
        root.append( self._write_source_documents( cr, uid, data_ini, data_fim) )

    #xml_txt = et.tostring(root, encoding="windows-1252")
    xml_txt = et.tostring(root, encoding="windows-1252")
    out=base64.encodestring( xml_txt )   
    return self.write(cr, uid, ids, {'state':'get', 'filedata':out, 'name':str(vat)+'.xml'}, context=context)


<record id="wizard_saft_pt_comuni" model="ir.ui.view">
        <field name="name">Exportar ficheiro para envio à AT</field>
        <field name="model">wizard.l10n_pt.saft.comunica</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form col="3" string="Gerar Fciheiro para AT"> 
                    <page string="Critérios">
                        <group col="2" fill="1" states="choose" colspan="4">
                            <separator colspan="2" string="Exportar Ficheiro"/>
                            <field name="comp" widget="selection"/>
                            <field name="filtro" />
                            <field name="portaria" />
                            <field name="year" widget="selection" attrs="{'readonly':[('filtro','!=','fiscal')], 'required':[('filtro', '=', 'fiscal')]}" />
                            <field name="data_ini" colspan="1" attrs="{'readonly':[('filtro','!=','data')], 'required':[('filtro', '=', 'data')]} "/>
                            <field name="data_fim" colspan="1" attrs="{'readonly':[('filtro','!=','data')], 'required':[('filtro', '=', 'data')]} " />
                            <field name="tipo"/>
                            <field invisible="1" name="state"/>
                        <group col="1" fill="1" states="get" colspan="4">
                            <separator string="Concluido"/>
                            <field name="name" invisible="1"/>
                            <field name="filedata" nolabel="1" readonly="1" filename="name"/>
                            <label align="0.0" string="Guarde o ficheiro resumido saft"/>
                        <group col="2" fill="1" colspan="4">
                            <button icon="gtk-cancel" name="act_cancel" special="cancel" states="choose" string="Cancelar" type="object"/>
                            <button icon="gtk-ok" name="act_getfile_comunica" states="choose" string="Exportar" type="object"/>
                            <button icon="gtk-close" name="act_destroy" special="cancel" states="get" string="Fechar" type="object"/>
                    <page string="Ajuda">
                        <label colspan="4" string="O ficheiro vai exportar todos os movimentos existentes na base de dados para o exercício escolhido"/>
                        <label colspan="4" string="Escolha o tipo conforme esteja a usar o OpenERP apenas para a Contabilidade ou Facturação ou para ambas"/>
                        <label colspan="4" string=""/>

    <record id="action_wizard_saft_comunica" model="ir.actions.act_window">
        <field name="name">Comunicação SAFT à AT</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">wizard.l10n_pt.saft.comunica</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="target">new</field>
    <menuitem action="action_wizard_saft_comunica" id="menu_wizard_saft_comunica" parent="account.menu_finance_legal_statement"/>

the button "Exportar" will change the notebook group and the group "Concluido " wont appear

I dont know whats going on....

I have some images on openerp 6 to help you understand this

image description

and when you click "Exportar"

image description

Pls help

best regards

Hello Francisco. Any news on this issue? I have the exact same problem and I can't figure it out. Take care

on 10/9/14, 7:32 PM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 5/12/14, 2:59 PM
Seen: 1439 times
Last updated: 3/16/15, 8:10 AM