2016-12-28 4 views
0

Я хочу рассчитать сумму столбца «Монтан crédit» на account.bank.statement. Я пытался использовать _get_sum_entry_encoding, но это не работает.Получите сумму столбца в odoo8

Смотреть картину:

sum of column

+1

Можем ли мы увидеть, что вы пробовали до сих пор? Ваша попытка в виде кода? – halfer

ответ

0

после многих испытаний и с помощью Kbir здесь решение: .py:

from openerp.osv import fields, orm, osv 
class sale_order_line(orm.Model): 
_inherit = 'account.bank.statement' 
_name = 'account.bank.statement' 

def _get_tot(self, cr, uid, ids, name, arg, context=None): 
res = {} 
cr.execute("SELECT sum(amount) FROM account_bank_statement_line WHERE statement_id ="+str(ids[0])+"") 
data = cr.fetchone() 
for re in self.browse(cr, uid, ids, context=context): 
res[re.id] = data[0] 
return res 


def _get_statement_from_line(self, cr, uid, ids, context=None): 
    result = {} 
    for line in self.pool.get('account.bank.statement.line').browse(cr, uid, ids, context=context): 
     result[line.statement_id.id] = True 
    return result.keys() 

_columns = { 

'totm': fields.function(_get_tot, 'totm',type='float', 
     store = { 
      'account.bank.statement': (lambda self, cr, uid, ids, context=None: ids, ['line_ids','move_line_ids'], 10), 
      'account.bank.statement.line': (_get_statement_from_line, ['amount'], 10), 
     }), 
     } 

.xml:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
    <record model="ir.ui.view" id="view_order_form_ftz"> 
     <field name="name">view.order.form.ftz</field> 
     <field name="model">account.bank.statement</field> 
     <field name="inherit_id" ref="account.view_bank_statement_formfz" /> 
     <field name="arch" type="xml"> 
      <xpath expr="//field[@name='balance_start']" position="after"> 
      <field name="totm" string="Montant total"/> 
      </xpath> 
     </field> 
    </record> 
    </data> 
</openerp> 

Я думаю, что вы снова Кабира.

0

Попробуйте ниже кода:

def _get_tot(self, cr, uid, ids, name, arg, context=None): 
    res = {} 
    cr.execute("SELECT sum(amount) FROM account_bank_statement_line WHERE statement_id ="+str(ids)+"") 
    data = cr.fetchall() 
    for re in self.browse(cr, uid, ids, context=context): 
     res[re.id] = data 

    return res 
+0

привет, я хочу попробовать с кодом python, потому что я хочу вызвать общее значение в другой функции –

+0

Попробуйте sql-запрос ... – KbiR

+0

да, я попробую его ..plz посмотреть ответ .. я получаю эту ошибку: я получаю это error: KeyError: 'statement_id' –

0

спасибо kbiR за ваш ответ я пытаюсь использовать запрос SQL здесь мой код:

from openerp.osv import fields, orm, osv 
class sale_order_line(orm.Model): 
_inherit = 'account.bank.statement' 
_name = 'account.bank.statement' 

def _get_tot(self,cr,uid,values,context): 
idstate = self.id 
cr.execute("SELECT sum(amount) FROM account_bank_statement_line WHERE statement_id ="+str(idstate)+"") 
return cr.fetchall() 

_columns = { 

'totm': fields.selection(_get_tot, 'totm'), 
     } 

мой xml поле:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
    <record model="ir.ui.view" id="view_order_form_ftz"> 
     <field name="name">view.order.form.ftz</field> 
     <field name="model">account.bank.statement</field> 
     <field name="inherit_id" ref="account.view_bank_statement_formfz" /> 
     <field name="arch" type="xml"> 
      <xpath expr="//field[@name='balance_start']" position="after"> 
      <field name="totm"/> 
      </xpath> 
     </field> 
    </record> 
    </data> 
</openerp> 

я получаю эту ошибку: _get_tot() занимает ровно 5 аргументов (4 приведены)

+0

Я не вижу декларации 'id' в вашем коде, для id нет значения id вот почему вы получаете 'keyError '. Обновлен мой предыдущий ответ, попробуйте сейчас. – KbiR

+0

try ''totm': dields.function (_get_tot, type = 'selection', 'totm) – KbiR

+0

hi thnx kbir Я попробую (' totm ': fields.function (_get_tot, 'totm', type = 'float')) Я получаю эту ошибку: ProgrammingError: ERREUR: erreur de syntaxe sur ou près de «[» LINE 1: ... t) FROM account_bank_statement_line WHERE statement_id = [16 ] –

 Смежные вопросы

  • Нет связанных вопросов^_^