diff --git a/addons/hr_payroll_account/hr_payroll_account.py b/addons/hr_payroll_account/hr_payroll_account.py index a58aed22730..476196759b2 100644 --- a/addons/hr_payroll_account/hr_payroll_account.py +++ b/addons/hr_payroll_account/hr_payroll_account.py @@ -27,17 +27,6 @@ from osv import fields, osv from tools import config from tools.translate import _ - -class contrib_register(osv.osv): - _inherit = 'hr.contribution.register' - _description = 'Contribution Register' - - _columns = { - 'account_id': fields.many2one('account.account', 'Account'), - 'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'), - } -contrib_register() - #class account_move_line(osv.osv): # # _inherit = 'account.move.line' @@ -84,14 +73,13 @@ class hr_payslip(osv.osv): #TODO: to correct def process_sheet(self, cr, uid, ids, context=None): move_pool = self.pool.get('account.move') - movel_pool = self.pool.get('account.move.line') - invoice_pool = self.pool.get('account.invoice') period_pool = self.pool.get('account.period') timenow = time.strftime('%Y-%m-%d') for slip in self.browse(cr, uid, ids, context=context): line_ids = [] - + debit_sum = 0.0 + credit_sum = 0.0 if not slip.period_id: search_periods = period_pool.search(cr, uid, [('date_start','<=',slip.date_from),('date_stop','>=',slip.date_to)], context=context) if not search_periods: @@ -102,50 +90,74 @@ class hr_payslip(osv.osv): name = _('Payslip of %s') % (slip.employee_id.name) move = { + 'narration': name, + 'date': timenow, + 'ref': slip.number, 'journal_id': slip.journal_id.id, 'period_id': period_id, - 'date': timenow, - 'ref':slip.number, - 'narration': name } for line in slip.line_ids: - if line.salary_rule_id.accounting_select != 'none': - amt = slip.credit_note and -line.total or line.total - partner_id = False - name = line.name - debit_account_id = line.salary_rule_id.account_debit.id - credit_account_id = line.salary_rule_id.account_credit.id - if line.salary_rule_id.accounting_select == 'third_party': - if line.salary_rule_id.register_id: - credit_account_id = line.salary_rule_id.register_id.account_id.id - else: - partner_id = slip.employee_id.partner_id.id - debit_line = (0,0,{ - 'name': line.name, - 'account_id': debit_account_id, - 'debit': amt > 0.0 and amt or 0.0, - 'credit': amt < 0.0 and -amt or 0.0, - 'date': timenow, - 'journal_id': slip.journal_id.id, - 'period_id': period_id, - }) - credit_line = (0,0,{ - 'date': timenow, - 'journal_id': slip.journal_id.id, - 'period_id': period_id, - 'name': name, - 'partner_id': partner_id, - 'account_id': credit_account_id, - 'debit': amt < 0.0 and -amt or 0.0, - 'credit': amt > 0.0 and amt or 0.0, - }) - if debit_account_id: - line_ids.append(debit_line) - if credit_account_id: - line_ids.append(credit_line) + amt = slip.credit_note and -line.total or line.total + partner_id = False + debit_account_id = line.salary_rule_id.account_debit.id + credit_account_id = line.salary_rule_id.account_credit.id + debit_line = (0, 0, { + 'name': line.name, + 'date': timenow, + 'partner_id': partner_id, + 'account_id': debit_account_id, + 'journal_id': slip.journal_id.id, + 'period_id': period_id, + 'debit': amt > 0.0 and amt or 0.0, + 'credit': amt < 0.0 and -amt or 0.0, + }) + credit_line = (0, 0, { + 'name': line.name, + 'date': timenow, + 'partner_id': partner_id, + 'account_id': credit_account_id, + 'journal_id': slip.journal_id.id, + 'period_id': period_id, + 'debit': amt < 0.0 and -amt or 0.0, + 'credit': amt > 0.0 and amt or 0.0, + }) + if debit_account_id: + line_ids.append(debit_line) + debit_sum += debit_line[2]['debit'] + if credit_account_id: + line_ids.append(credit_line) + credit_sum += credit_line[2]['credit'] + + if debit_sum > credit_sum: + adjust_credit = (0, 0, { + 'name': _('Adjustment Entry'), + 'date': timenow, + 'partner_id': partner_id, + 'account_id': slip.journal_id.default_credit_account_id.id, + 'journal_id': slip.journal_id.id, + 'period_id': period_id, + 'debit': 0.0, + 'credit': debit_sum - credit_sum, + }) + line_ids.append(adjust_credit) + elif debit_sum < credit_sum: + adjust_debit = (0, 0, { + 'name': _('Adjustment Entry'), + 'date': timenow, + 'partner_id': partner_id, + 'account_id': slip.journal_id.default_debit_account_id.id, + 'journal_id': slip.journal_id.id, + 'period_id': period_id, + 'debit': credit_sum - debit_sum, + 'credit': 0.0 + }) + line_ids.append(adjust_debit) + move.update({'line_id': line_ids}) move_id = move_pool.create(cr, uid, move, context=context) self.write(cr, uid, [slip.id], {'move_id': move_id}, context=context) + if slip.journal_id.entry_posted: + move_pool.post(cr, uid, [move_id], context=context) return super(hr_payslip, self).process_sheet(cr, uid, [slip.id], context=context) #TODO: to clean: the verofying doesn't do anything in the accounting.. @@ -381,7 +393,6 @@ hr_payslip() class hr_salary_rule(osv.osv): _inherit = 'hr.salary.rule' _columns = { - 'accounting_select':fields.selection([('none', 'No Accounting Entries'), ('third_party', 'To Employee or contribution Register'), ('yes','Regular Entries')], 'Accounting Entries Option'), 'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'), 'account_tax_id':fields.many2one('account.tax.code', 'Tax Code'), 'account_debit': fields.many2one('account.account', 'Debit Account'), diff --git a/addons/hr_payroll_account/hr_payroll_account_view.xml b/addons/hr_payroll_account/hr_payroll_account_view.xml index 4b36508138d..825fac9cab4 100644 --- a/addons/hr_payroll_account/hr_payroll_account_view.xml +++ b/addons/hr_payroll_account/hr_payroll_account_view.xml @@ -18,20 +18,6 @@ - - hr.contribution.register.inherit.form - hr.contribution.register - - form - - - - - - - - - @@ -41,11 +27,10 @@ - - - - - + + + + @@ -59,11 +44,11 @@ form - - - - - + + + + +