sábado, 27 de setembro de 2014

openerp.netsvc: 'NoneType' object has no attribute '_table'

Tentei atualizar um modulo e deu este erro, não consigo mais abrir o sistema, solução :

Volta todos os modulos para Status = installed :

update ir_module_module set state = 'installed' where state = 'to upgrade'


Dai é possível abrir o sistema, e ver o problema no modulo especificado.

No meu caso especifico, estava tentando atualizar um modulo : relatorio, que tinha um campo :
   'qualidade_id': fields.many2one('qualidade.doc', 'Documento',track_visibility='onchange',),

e o modulo qualidade não estava no addons;

quinta-feira, 11 de setembro de 2014

delphi acces violation


17/07/13 Delphi: Localizando erros de Access Violation

Seu aplicativo está gerando uma exceção não capturada e está exibindo uma mensagem de Access Violation e você quer identificar o local (arquivo, linha e código) onde o erro está ocorrendo? Eis o caminho:
  • Execute a aplicação [Run], entre no modo de depuração [Pause], vá em [Search] e em seguida em [Goto Address]
  • Entre com o endereço mostrado na mensagem [Ex: $00407E50 - note que você deve adicionar o sinal de $] e faça a busca – se encontrado, o endereço será selecionado automaticamente na aba CPU.
  • Adicione um Breakpoint no endereço recém encontrado [CTRL + B]
  • Execute a aplicação novamente.
  • Quando o Breakpoint for encontrado a aplicação será pausada, nesse momento você então poderá verificar o Caller [CTRL + L]  – onde poderá visualizar a origem da chamada [arquivo, linha e código executado].
Fica aí a dica!

Fonte:  http://www.uebbi.com/delphi-localizando-erros-de-access-violation/

quarta-feira, 2 de julho de 2014

Odoo - View



  • from openerp.osv import fields,osv
    from openerp import tools
           
     class x_pttstl_report_parent(osv.osv):
        _name = "x_pttstl_report_parent"
        _description = "tree map"
        _auto = False
        _columns = {
            'tuyennr_parent': fields.char('parent', size=128, readonly=True),
            'tendd': fields.char('child', size=128, readonly=True),
           }
        _order = 'tuyennr_parent,tendd'
        def init(self, cr):
            tools.drop_view_if_exists(cr, 'x_pttstl_report_parent')
            cr.execute(""" create or replace view x_pttstl_report_parent AS (
                   select 
                       nrprt.id as id,
                       nrprt.x_tendd_tuyennr_parent as tuyennr_parent,
                       nr.x_tendd as tendd
                    from 
                        x_pttstl_tuyennr nr
                    join 
                        x_pttstl_tuyennr_parent nrprt on (nrprt.id = nr.x_tuyennr_tuyennr_parent_id)
                    group by 
                        nrprt.id,tendd_tuyennr_parent,tendd
                        )
            """)
     
    x_pttstl_report_parent()
     
      model="ir.ui.view" id="x_pttstl_report_parent_tree_view">
         name="name">x_pttstl_report_parent.tree
  • > name="model">x_pttstl_report_parent> name="arch" type="xml"> string="Tree map" version="7.0"> name="tuyennr_parent"/> name="tendd"/> > > >   model="ir.ui.view" id="x_pttstl_report_parent_form_view"> name="name">x_pttstl_report_parent.form> name="model">x_pttstl_report_parent> name="arch" type="xml"> string="So do cay" version="7.0"> name="tuyennr_parent"/> name="tendd"/> > > >
     
      model="ir.actions.act_window" id="action_pttstl_report_parent">
      name="name">Tree map
    > name="res_model">x_pttstl_report_parent> >
     
      name="Map" parent="pttstl_menu" id="vanhanh_menu"/>   
     name="Tree" parent="vanhanh_menu" id="tree_menu" action="action_pttstl_report_parent"/>
     
     
    Fonte:   http://sajjadhossain.com/2013/06/30/openerp-7-creating-report-using-sql-query/

    quarta-feira, 18 de dezembro de 2013

    Odoo - Mensagens :

    - Não existe estabelecimento padrão para a empresa do usuário atual
      Configurações -> Usuarios -> "User" -> Permissão de Acesso  :
            Listas de Preço de Venda = Sim
            Gerenciar Múltiplos Locais e Armazéns = Sim
      Vendas -> Configurações -> Estabelecimento

    - Error Validating - Emitente/Endereço - Código do BC
                                    Emitente/Endereço - Código do BC 
       Vendas -> Configurações -> Agenda de Endereços -> Localização -> Países  
      

    - ValidateError - Conta e Período devem pertencer a mesma empresa
         Vendas -> Clientes -> Editar -> Contabilidade -> Conta de Recebimento (informar uma conta da Empresa)

    - There is no journal : Configurações -> Tecnicos -> Sequencias e Identi.. -> Sequencia

    quarta-feira, 12 de junho de 2013

    Ler arquivo csv Openerp + python

    Adaptei do modulo ea_import.

        def import_to_db(self, cr, uid, ids, context={}):
            context['result_ids'] = []
            result_pool = self.pool.get('ea_import.chain.result')
            for chain in self.browse(cr, uid, ids, context=context):
                csv_reader=unicode_csv_reader(StringIO(base64.b64decode(chain.input_file)),delimiter=str(";"),quoting=(not
    chain.delimiter and csv.QUOTE_NONE) or csv.QUOTE_MINIMAL,quotechar=chain.delimiter and str("'") or None, charset=chain.charset)

                if chain.header:
                    csv_reader.next()
                result_ids = {}

                #return res
                csv_reader.next()
                for row in csv_reader:
                    if len(row)>0:

                        print row[2], row[-2], row[-1]

    quinta-feira, 9 de maio de 2013

    Cálculo de Horas - Openerp - Python

        def onchange_hours_out(self, cr, uid, ids, hours_out=0.0, hours_in=0.0, datex=None, datex_out=None):
            #pdb.set_trace(),
            dataEnt = date(*time.strptime(datex,'%Y-%m-%d')[:3])
            dataSai = date(*time.strptime(datex_out,'%Y-%m-%d')[:3])
            diferencaDias =((dataSai-dataEnt).days*24),
            return {'value':{'hours': ((hours_out - hours_in)+diferencaDias[0])}}




                         hi = time.strptime('09:30', '%H:%M')
                        hit = float(time.strftime('%H', hi)) + (float(time.strftime('%M',hi))/60)
                        ho = time.strptime('16:15', '%H:%M')
                        hot = float(time.strftime('%H', ho)) + (float(time.strftime('%M',ho))/60)

                        dte = date(*time.strptime(str('20/03/13'),'%d/%m/%y')[:3])
                        dts = date(*time.strptime(str('20/03/13'),'%d/%m/%y')[:3])
                        diferencaDias =((dts-dte).days*24)
                        ht = diferencaDias + (hot - hit)

    terça-feira, 7 de maio de 2013

    Uncaught Error: NameError: name 'project_id' is not defined

    OpenERP Client error
    Uncaught Error: NameError: name 'project_id' is not defined


    • step 1. go to menu(more->setting->Technical->user interface->view
    • step 2. look for "phase.task.search.form" , click Form view
    • step 3. click Edit , em seguida,
        <field name="phase_id"/>
        then add domain="[]" de modo a se tornar 
        <field name="phase_id" domain="[]"/>
      
    • step 4. click save and you error should by now solve.


      copiado de : http://help.openerp.com/question/5762/uncaught-error-in-project-task-page-search-bar/