0

クラスに 2 つのフィールドがあり、3 番目のフィールドには、前に宣言された 2 つのフィールドの乗算結果が必要です。

例えば:

_columns = {
            'Item' : fields.integer('Items'),
            'Fecha': fields.date('Fecha del Documento', required=True, select=True),
            'Codigo Arancelario' : fields.integer('Codigo Arancelario'),
            'Descripcion Arancelaria' : fields.char('Descripcion Arancelaria', size=42, required = True, translate = True), 
            'Especificaciones Tecnicas' : fields.char('Especificaciones Tecnicas', size=60, required = True, translate = True), 
            'Cantidad' : fields.float('Cantidad'), 'Unidad de Medida': fields.many2one('product.uom', 'Unidad de Medida'),
            'Precio Unitario Declarado' : fields.float('Precio Unitario Declarado'), 'Moneda' : fields.many2one('res.currency', 'Moneda'),
            'Valor En Divisas' : Result of the multiplication of 'Precio Unitario Declarado' * 'Cantidad',
            'notas' : fields.text('Notas'),
            }

このような単純な計算に関数フィールドを使用する必要がありますか?

これを達成するためのより簡単な方法はありますか?

4

4 に答える 4

5

関数フィールドは、そのような操作を行うのに適したオプションです。関数体を使用した 2 つの体の乗算のサンプル コードを次に示します。

def multi_a_b(self, cr, uid, ids, name, arg, context=None):
    res = {}
    for record in self.browse(cr, uid, ids,context):
        res[record.id] = record.field_a * record.field_b
    return res

_columns = {
    'field_a': fields.integer('A'),
    'field_b': fields.integer('B'),
    'field_c': fields.function(multi_a_b, type='integer', 'C'),
}
于 2013-04-02T05:06:57.070 に答える
1

ここに可能な解決策があります

from osv import osv, fields

def multi_price_qty(self, cr, uid, ids, name, arg, context=None):
    res = {}
    for product in self.browse(cr, uid, ids,context):
        res[product.id] = product.price * product.qty
    return res

class abs_product(osv.Model):
    _name = "abs.product"
    _columns = {
    'code': fields.char('Code', size=32),
    'description': fields.char('Description', size=64),
    'sizeunit': fields.char('Size /Unit', size=32),
    'qty': fields.integer('Quantity', size=32),
    'price': fields.integer('Price'),
    'pullout': fields.char('Pull-Out', size=32),
    'return': fields.char('Return', size=32),
    'offtake': fields.char('Offtake', size=32),
    'weeksales': fields.char('Weekly Sales', size=32),
    'date': fields.date('Date'),
    'totalprice': fields.function(multi_price_qty, type='integer', 'Total Price'),
    }
abs_product()
于 2014-03-08T17:37:42.620 に答える
0

このタイプの計算には関数フィールドで問題ないと思います。

または別の方法でボタンを配置できます。ボタンをクリックすると、この 2 つのフィールド値が乗算されます。

于 2013-04-02T04:34:26.443 に答える