я добавил поле в существующий модуль "hr.payslip" из моего модуля. Как показать данные этого поля - PullRequest
0 голосов
/ 08 июля 2019

присутствует существующий модуль, т.е. hr.payslip, в этом модуле я добавил поле из моего модуля.Теперь я хочу отобразить значение этого поля в модуле hr.payslip.

models / emailpayslip.py

@api.multi #Decorate a record-style method where 'self' is a recordset. The method typically defines an operation on records.
def send_email(self):
    ir_model_data = self.env['ir.model.data']
    payslip_obj = self.env['hr.payslip']
    ids = self.env.context.get('active_ids', [])
    ctx = dict()
    employee_name = ''
    for id_vals in ids:
        payslip_browse = payslip_obj.browse(id_vals)

        global email
        email = payslip_browse.employee_id.work_email

        store_email.sql_example(self,email)#calling method of store_email model

        if payslip_browse.employee_id.work_email:
            template_id = ir_model_data.get_object_reference('Payslip', 'email_template_payslip')[1]
            ctx.update({
                'default_model': 'hr.payslip',
                'default_res_id': payslip_browse.id,
                'default_use_template': bool(template_id),
                'default_template_id': template_id,
                'default_composition_mode': 'comment',
                'email_to': payslip_browse.employee_id.work_email,
            })
            mail_id = self.env['mail.template'].browse(template_id).with_context(ctx).send_mail(payslip_browse.id, True)

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

класс store_email (models.Model):

_name = "store.email"


sendemail = fields.Char(
    string='Send Email',
    default=lambda self: self._get_default_name(),
)
no_of_times = fields.Integer(string='No of Times')    
date_of_email_send = fields.Date(
    string="Date of Email",
    default=lambda self: fields.datetime.now())

@api.model
def _get_default_name(self):
    return "test"


@api.multi
def sql_example(self,temp):
    dob = datetime.today()
    self.env.cr.execute("SELECT * FROM store_email WHERE sendemail = %s",(temp,))
    res = self.env.cr.fetchall()
    if res == []:
        count = 1            
        self.env.cr.execute("INSERT INTO store_email (sendemail,no_of_times,date_of_email_send) VALUES (%s,%s,%s)",(temp,count,dob))
        self.env.cr.commit()
    else:
        for x in res:
            count = x[7] + 1

        self.env.cr.execute("UPDATE store_email SET date_of_email_send=%s,no_of_times=%s WHERE sendemail=%s",(dob,count,temp))
        self.env.cr.commit()

Модель для добавления поля в hr.payslip, который показывает дату последней отправки платежного листа

класс Add_Field (models.Model):

_inherit = "hr.payslip"
last_payslip_send = fields.Date(string='Last Payslip Send')

@api.multi
def last_send_payslip(self):


    self.env.cr.execute("SELECT * FROM store_email WHERE sendemail=%s",(email,))
    res = self.env.cr.fetchall()

my addfile.xml

add_newfield

screenshort страницыгде я добавил поле эта страница содержит скриншот

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете использовать функцию вычисления или значение по умолчанию для загрузки значения в поле или вы также можете передать значение при создании записи пример функции по умолчанию:

name = fields.Char(
string='Name',
default=lambda self: self._get_default_name(),
)

@api.model
def _get_default_name(self):
   return "test"

См. Эту ссылку для вычисляемых полей

...