Skip to Content
Menu
This question has been flagged

Here's my code -

@api.multi

def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):

        payslips = self.env['hr.payslip']

#        [data] = self.read()

        active_id = self.env.context.get('active_id')

        if active_id:

            [run_data] = self.env['hr.payslip.run'].browse(active_id).read(['date_start', 'date_end', 'credit_note'])

        from_date = run_data.get('date_start')

        to_date = run_data.get('date_end')

        if not from_date or from_date == False:

            today = datetime.today()

            to_date = datetime.date(today.year, today.month, 1) - 1

            from_date = datetime.date(to_date.year, to_date.month, 1)

        

        if not to_date or to_date == False:

            today = datetime.today()

            to_date = datetime.date(today.year, today.month, 1) - 1

            from_date = datetime.date(to_date.year, to_date.month, 1)

        

        query = """select id from hr_employee where id not in 

            (select distinct employee_id from hr_payslip where date_from = '%s' and date_to = '%s')""" % (from_date, to_date)

        query_res = self.env.cr.execute(query)

        query_res = self.env.cr.fetchall()

        

        emp_ids = []

        for each_id in query_res:

            emp_ids.append(each_id[0])

        

        return {'domain': {'employee_ids':[('id','in',emp_ids)]}}


I tried by pasting this code into the hr_payroll_payslips_by_employees.py to get the list of employees filtered while selecting employees for payslip batch. The intent is to avoid creation of duplicate payslips for the same payroll period. But getting an error as "TypeError: Cannot read property 'documentElement' of null"

Any help on this would be a great help and thanks in advance for the same.


EDIT:

Would like to add here: That, my code runs perfectly until the last line and the error is thrown only on last line when returning the domain back to my m2m field (employee_ids).

http://<ip-address>:8069/web/content/3598-e2a938e/web.assets_backend.js:585
Traceback:
TypeError: Cannot read property 'documentElement' of null
    at Class._postprocess_fvg (http://103.215.164.67:8069/web/content/3598-e2a938e/web.assets_backend.js:585:239)
    at Function._.mapObject (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:50:233)
    at Object.<anonymous> (http://103.215.164.67:8069/web/content/3598-e2a938e/web.assets_backend.js:580:189)
    at Object.<anonymous> (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:802:681)
    at fire (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:796:299)
    at Object.fireWith [as resolveWith] (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:801:198)
    at Object.<anonymous> (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:802:874)
    at fire (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:796:299)
    at Object.fireWith [as resolveWith] (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:801:198)
    at Object.<anonymous> (http://103.215.164.67:8069/web/content/3455-057e365/web.assets_common.js:802:874)
Avatar
Discard
Best Answer
Hi, 
you can't make the fields_view_get function with a multi api because the function only displays the architecture of the view and reacts on the fields and their attributes, not their values.
Furthermore, self.env.context.get('active_id') does not return anything in fields_view_get. 
the return must be a call of the super..
You need to tell us what you want to do..
here is an example of fields_view_get from the server : 
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
     res = super(Product, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
        if self._context.get('location') and isinstance(self._context['location'], (int, long)):
            location = self.env['stock.location'].browse(self._context['location'])
            fields = res.get('fields')
            if fields:
                if location.usage == 'supplier':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Future Receipts')
                    if fields.get('qty_available'):
                        res['fields']['qty_available']['string'] = _('Received Qty')
                elif location.usage == 'internal':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Forecasted Quantity')
                elif location.usage == 'customer':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Future Deliveries')
                    if fields.get('qty_available'):
                        res['fields']['qty_available']['string'] = _('Delivered Qty')
                elif location.usage == 'inventory':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Future P&L')
                    if fields.get('qty_available'):
                        res['fields']['qty_available']['string'] = _('P&L Qty')
                elif location.usage == 'procurement':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Future Qty')
                    if fields.get('qty_available'):
                        res['fields']['qty_available']['string'] = _('Unplanned Qty')
                elif location.usage == 'production':
                    if fields.get('virtual_available'):
                        res['fields']['virtual_available']['string'] = _('Future Productions')
                    if fields.get('qty_available'):
                        res['fields']['qty_available']['string'] = _('Produced Qty')
        return res

Avatar
Discard
Author Best Answer

Hi Friends,

I am really stuck with this. If the above problem does not have a direct solution, any alternative solution would as well be a great help.

Regards,

Avatar
Discard
Related Posts Replies Views Activity
3
Aug 20
13723
0
Aug 20
1416
1
Nov 19
4148
1
Mar 15
8181
2
Nov 24
119