показать поле или другое в виде дерева в зависимости от условия

Как я могу отобразить поле или другое поле в том же столбце древовидного представления на основе условия?

например, я хочу установить столбец субсчета, когда выбран денежный счет, чтобы выбрать партнера. когда это банк, я хочу указать один из его дочерних банковских счетов.

Я хочу, чтобы они находились прямо под столбцом вспомогательной учетной записи в древовидном представлении строки ваучера.


person kerolos    schedule 12.11.2014    source источник
comment
не могли бы вы привести пример?   -  person Baiju KS    schedule 12.11.2014
comment
Спасибо за твою заботу. Я только что обновил вопрос.   -  person kerolos    schedule 13.11.2014


Ответы (1)


Один из способов — создать представление базы данных, в котором можно использовать возможности SQL-выборов, объединений и условного выбора.

Это решит вашу проблему и даже даст вам больше власти и контроля.

Ниже приведен фрагмент кода, который я написал для получения отчета о движении материалов на складе:

class warehouse_report_material_movement(osv.osv):
    _name = 'warehouse.report.material.movement'

 def init(self,cr):
        tools.sql.drop_view_if_exists(cr,'warehouse_report_material_movement')
        cr.execute(''' 
                CREATE OR REPLACE VIEW warehouse_report_material_movement as(
                   select row_number() OVER () AS id, mat.name as material_name, 
                           case
                                when (o.order_type ='3' and o.destination_warehouse_id::int =w.id) then material_qty*-1
                            else
                                material_qty
                            end as material_qty,
                            case 
                                when o.order_type ='0' then 'Request'
                                when o.order_type ='1' then 'Addition'
                                when o.order_type ='2' then 'Issue'
                                when (o.order_type ='3' and o.warehouse_id::int =w.id) then  '(+)Internal Move'
                                when (o.order_type ='3' and o.destination_warehouse_id::int =w.id) then '(-)Internal Move'
                                when o.order_type ='4' then 'Return'
                            end as order_type,
                        w.name as warehouse_name,
                        o.date::date as order_date,
                        o.create_date::date as record_date,
                        r.login as user_name
                    from warehouse_order_line ol
                    inner join moe_base_material mat on ol.material_id=mat.id
                    inner join moe_warehouse_order o on ol.order_id=o.id
                    inner join moe_warehouse_warehouse w on (o.warehouse_id=w.id or o.destination_warehouse_id=w.id)
                    left join res_users r on o.create_uid=r.id
                 )
                ''')

Надеюсь это поможет :)

person user3259659    schedule 15.11.2014
comment
Я рассматриваю представление списка в ваучере учетной записи, в котором отображается строка ваучера учетной записи. - person kerolos; 16.11.2014