Impacted versions:
9.0c/e

Steps to reproduce:
Install hr_payroll_account.
Create a Payslip with a period earlier in the year.
Confirm Payslip

Current behavior:
"Account Date" (on accounting tab an on journal entries) is today

Expected behavior:
"Account Date" should be a date in the period (presumably the last day) as the help for this field describes.  "Keep empty to use the period of the validation(Payslip) date."

Also, filling the date in advance (while its draft) gives you the incorrect assumption that it will be honored at all.  It will not.

I will submit a pull request to fix for this shortly.

addons/hr_payroll_account/hr_payroll_account.py
if context is None:
            context = {}
        if 'journal_id' in context:
            vals.update({'journal_id': context.get('journal_id')})
        return super(hr_payslip, self).create(cr, uid, vals, context=context)
    def onchange_contract_id(self, cr, uid, ids, date_from, date_to, employee_id=False, contract_id=False, context=None):
        contract_obj = self.pool.get('hr.contract')
        res = super(hr_payslip, self).onchange_contract_id(cr, uid, ids, date_from=date_from, date_to=date_to, employee_id=employee_id, contract_id=contract_id, context=context)
        journal_id = contract_id and contract_obj.browse(cr, uid, contract_id, context=context).journal_id.id or (not contract_id and self._get_default_journal(cr, uid, context=None))
        res['value'].update({'journal_id': journal_id})
        return res
    @api.onchange('contract_id')
    def onchange_contract(self):
        super(hr_payslip, self).onchange_contract()
        self.journal_id = self.contract_id and self.contract_id.journal_id.id or (not self.contract_id and self._get_default_journal())
        return
    def cancel_sheet(self, cr, uid, ids, context=None):
        move_pool = self.pool.get('account.move')
        move_ids = []
        move_to_cancel = []
        for slip in self.browse(cr, uid, ids, context=context):
            if slip.move_id:
                move_ids.append(slip.move_id.id)
                if slip.move_id.state == 'posted':
                    move_to_cancel.append(slip.move_id.id)
        move_pool.button_cancel(cr, uid, move_to_cancel, context=context)
        move_pool.unlink(cr, uid, move_ids, context=context)
        return super(hr_payslip, self).cancel_sheet(cr, uid, ids, context=context)
    def process_sheet(self, cr, uid, ids, context=None):