Odoo, как динамически создавать еженедельное расписание мод-пт и пн-пт в зависимости от значения поля inter

У меня есть задача, от которой болит голова, очень благодарю за помощь.
ЗАДАЧА:

  • Модель A и Модель B имеют отношение "многие-многие".
  • В модели B, которая имеет отношение many2many, у меня есть поле Integer.
  • Если целое число поля равно 3 или более, для каждой строки элементов строки, добавленных с использованием элементов many2many, динамически генерировать еженедельные расписания, что означает, что если целочисленное значение равно 3, динамически генерировать три недели для всех элементов строки в many2many, если поле равно 4 для каждой позиции создайте 4 недели для планирования.

Я безуспешно пытался воспользоваться мастером. Способы решения, которые, я думаю, могут помочь, но мне не удалось успешно заставить его работать, используя fields_view_init (), fields_view_get (), используя контекст, в котором я выбираю значение целочисленных полей в модели B отношения многие ко многим и использование @ api.onchange и @ api.depends - извлекает значение целочисленного поля и может с помощью fields_view_get () динамически создавать двухнедельное расписание или трехнедельное расписание в зависимости от целочисленного значения.

Как я могу достичь, пожалуйста, высоко ценю несколько примеров кода. Этот код ниже поможет понять, что я имею в виду выше.

class  ratecard_sin_radio(models.Model):
    code  = fields.Char(string='SINGULAR RATECARD CODE',readonly=True)
    name  =   fields.Char(string='NAME')
    outlet_id = fields.Many2one(comodel_name='outlet', string='Outlet')
    timeband_id  = fields.Many2one(comodel_name='timeband', string='TimeBand')


class  ratecard_multiple(models.Model):
    #pudb.set_trace()
    _name = 'ratecard.multiple'
    scheduled_for  = fields.Integer(string='SCHEDULED FOR',default=1 ,track_visibility='always',store=True , readonly=True)

    multiple_ratecard_id  = fields.Many2many(comodel_name='ratecard.sin.radio', relation='ratecard_multiple_singular_rel',
                                                    column1='ratecard_multiple_id',
                                                    column2='ratecard_sin_radio_id', 
                                                    string='RATECARDS') 

Пример части представления, которое у меня есть:

  <group colspan="4"  col="4" >
<tree  editable="bottom">
        <group colspan="2"  col="2" >
             <field name='name'/>

            <field name="scheduled_for"/>
              </group>

        <field name='multiple_ratecard_id' nolabel="1" options="{'reload_on_button': true}">  <!-- widget="many2many"-->
        <tree  string="ALLOCATE SPOTS" editable="bottom">
                            <!--<field name="week_id" widget="one2many_list"/>-->
                         <button name="scheduler" string="SCHEDULE" type="object" class="oe_highlight"/>
                           <field name="code"/>
                            <field name="name"/>
                            <field name="outlet_id" on_change="onchange_outlet(outlet_id)" placeholder="OUTLET"/>
                             <field name="outlet_type_id" domain="[('outlet_id', '=' ,outlet_id)]" placeholder="OUTLET TYPE" />

                             <field name='monday'/>
                            <field name='tuesday'/>
                            <field name='wednesday'/>
                            <field name='thursday'/>
                            <field name='friday'/>
                            <field name='saturday'/>
                             <field name='sunday'/>
                             <field name="spot_total"/>
                             <field name="noofweeks"/>
                           <field name='allocate_subtotal'/>
                           <field name="rates_total"/>
                          <field name="total_cost"/>
        </tree>
      </field>

Планировщик кнопок - это функция, которая теперь зависит от schedule_for для динамической генерации еженедельных просмотров, то есть, если schedule_for равно 3
, то динамически я генерирую пн-вс пн-вс пн-вс. если
4, то я генерирую пн-вс пн-вс пн-вс пн-вс

На <button name="scheduler" string="SCHEDULE" type="object" class="oe_highlight"/>

вызывает эту функцию, которая создает неделю. Проблема, которую мне нужно контролировать, чтобы эта неделя была сгенерирована в соответствии со значением scheduled_for, так что если scheduled_for равно 3, я возвращаю модель недельного календаря с 3 неделями, то есть пн-вс, пн-вс, пн-вс, если scheduled_for равно 4 затем я возвращаюсь пн-вс, пн-вс, пн-вс, пн-вс

@api.multi
def scheduler(self):
    view_id = self.env.ref('ragtimeorder.view_week_form').id
#   context = self._context.copy()
    return {
            'name':_('SCHEDULE RATECARD'),
            'view_type': 'form',
            'view_mode': 'form',
            'views': [(view_id, 'form'), ],
            'res_model': 'week',
           # 'context': self._context,
            'type': 'ir.actions.act_window',
            'target': 'new',
            'flags': {'action_buttons': True},
}

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


person danielmwai    schedule 02.12.2015    source источник
comment
Пожалуйста, отредактируйте свой вопрос и добавьте: 1. Ваш код / ​​ваши попытки 2. Ваш ввод, текущий вывод и ожидаемый результат.   -  person Bhavesh Odedra    schedule 02.12.2015
comment
Я не понимаю: у вас есть форма для модели A, на которой изображено поле модели B? В форме модели B у вас есть еще одно поле many2many для модели, скажем C? в зависимости от строк C (скажем, ROWS) и целочисленного поля (скажем, N), вам нужно создать ROWS x N недель планирования?   -  person Alessandro Ruffolo    schedule 02.12.2015
comment
@ Odedra, @ Alessandro, любезно я добавил код для лучшего понимания   -  person danielmwai    schedule 02.12.2015
comment
что в поле "понедельник" и т. д.?   -  person Alessandro Ruffolo    schedule 02.12.2015
comment
@AlessandroRuffolo, в поле понедельник может быть дата или 0 или 1, пн-вс - я использую это для планирования   -  person danielmwai    schedule 03.12.2015
comment
@danielmwai, поэтому вам нужно сгенерировать строки в multiple_ratecard_id в зависимости от поля! Я прав?   -  person Alessandro Ruffolo    schedule 03.12.2015
comment
@AlessandroRuffolo, а не строки, кнопка планировщика, которая вызывает функцию scheduler, возвращает представление с модельной неделей, любезно, я внес изменения, проверьте, теперь планировщик принимает значение параметра schedule_for так, что если его 3, то будет динамически создавать 3 недели в представлении при нажатии кнопки, если значение schedule_for изменяется на 4, тогда он динамически создает 4 недели, и это будет происходить для каждой строки в multiple_ratecard_id   -  person danielmwai    schedule 03.12.2015


Ответы (1)


@danielmwai

Здесь есть несколько возможных решений, которые вы можете использовать:

1) Каждый раз, когда вы планируете, вы создаете запись в базе данных для всех возможных событий (проданное и постоянное решение, но много накладных расходов)

2) Вы можете виртуально создавать записи, используя методы read/search_read, каждый раз, когда кто-то запрашивает запись, вы читаете эту запись и создаете виртуальную запись, проходящую в представлении, когда представления повторно дамп, он будет отображать значения и возвращаться в соответствии с, и когда вы получите данные для записи, тогда over ride write, удалить виртуальные записи и обработать их с помощью кода. (быстро, но иногда может плохо себя вести)

3) Вы можете написать веб-модуль и позволить JS творить чудеса и выполнять рендеринг всех событий через интерфейсный модуль веб-сайта.

Лучшее

person ifixthat    schedule 07.12.2015