2018-01-16 06:58:15 +01:00
# -*- coding: utf-8 -*-
2018-01-16 11:34:37 +01:00
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
2018-01-16 06:58:15 +01:00
2018-01-16 11:34:37 +01:00
from flectra import api , fields , models , _
2018-01-16 06:58:15 +01:00
class FinancialYearOpeningWizard ( models . TransientModel ) :
_name = ' account.financial.year.op '
company_id = fields . Many2one ( comodel_name = ' res.company ' , required = True )
opening_move_posted = fields . Boolean ( string = ' Opening Move Posted ' , compute = ' _compute_opening_move_posted ' )
2018-01-16 11:34:37 +01:00
opening_date = fields . Date ( string = ' Opening Date ' , required = True , related = ' company_id.account_opening_date ' , help = " Date from which the accounting is managed in Flectra. It is the date of the opening entry. " )
2018-01-16 06:58:15 +01:00
fiscalyear_last_day = fields . Integer ( related = " company_id.fiscalyear_last_day " , required = True ,
help = " The last day of the month will be taken if the chosen day doesn ' t exist. " )
fiscalyear_last_month = fields . Selection ( selection = [ ( 1 , ' January ' ) , ( 2 , ' February ' ) , ( 3 , ' March ' ) , ( 4 , ' April ' ) , ( 5 , ' May ' ) , ( 6 , ' June ' ) , ( 7 , ' July ' ) , ( 8 , ' August ' ) , ( 9 , ' September ' ) , ( 10 , ' October ' ) , ( 11 , ' November ' ) , ( 12 , ' December ' ) ] ,
related = " company_id.fiscalyear_last_month " ,
required = True ,
help = " The last day of the month will be taken if the chosen day doesn ' t exist. " )
account_setup_fy_data_done = fields . Boolean ( string = ' Financial year setup marked as done ' , compute = " _compute_setup_marked_done " )
@api.depends ( ' company_id.account_setup_fy_data_done ' )
def _compute_setup_marked_done ( self ) :
for record in self :
record . account_setup_fy_data_done = record . company_id . account_setup_fy_data_done
@api.depends ( ' company_id.account_opening_move_id ' )
def _compute_opening_move_posted ( self ) :
for record in self :
record . opening_move_posted = record . company_id . opening_move_posted ( )
def mark_as_done ( self ) :
""" Forces fiscal year setup state to ' done ' . """
self . company_id . account_setup_fy_data_done = True
def unmark_as_done ( self ) :
""" Forces fiscal year setup state to ' undone ' . """
self . company_id . account_setup_fy_data_done = False
@api.multi
def write ( self , vals ) :
if ' fiscalyear_last_day ' in vals or ' fiscalyear_last_month ' in vals :
for wizard in self :
company = wizard . company_id
vals [ ' fiscalyear_last_day ' ] = company . _verify_fiscalyear_last_day (
company . id ,
vals . get ( ' fiscalyear_last_day ' ) ,
vals . get ( ' fiscalyear_last_month ' ) )
return super ( FinancialYearOpeningWizard , self ) . write ( vals )
class OpeningAccountMoveWizard ( models . TransientModel ) :
_name = ' account.opening '
company_id = fields . Many2one ( comodel_name = ' res.company ' , required = True )
opening_move_id = fields . Many2one ( string = ' Opening Journal Entry ' , comodel_name = ' account.move ' , related = ' company_id.account_opening_move_id ' )
currency_id = fields . Many2one ( comodel_name = ' res.currency ' , related = ' opening_move_id.currency_id ' )
opening_move_line_ids = fields . One2many ( string = ' Opening Journal Items ' , related = " opening_move_id.line_ids " )
journal_id = fields . Many2one ( string = ' Journal ' , comodel_name = ' account.journal ' , required = True , related = ' opening_move_id.journal_id ' )
date = fields . Date ( string = ' Opening Date ' , required = True , related = ' opening_move_id.date ' )
def validate ( self ) :
self . opening_move_id . post ( )
@api.onchange ( ' opening_move_line_ids ' )
def opening_move_line_ids_changed ( self ) :
debit_diff , credit_diff = self . company_id . get_opening_move_differences ( self . opening_move_line_ids )
unaffected_earnings_account = self . company_id . get_unaffected_earnings_account ( )
balancing_line = self . opening_move_line_ids . filtered ( lambda x : x . account_id == unaffected_earnings_account )
if balancing_line :
if not self . opening_move_line_ids == balancing_line and ( debit_diff or credit_diff ) :
balancing_line . debit = credit_diff
balancing_line . credit = debit_diff
else :
self . opening_move_line_ids - = balancing_line
elif debit_diff or credit_diff :
balancing_line = self . env [ ' account.move.line ' ] . new ( {
' name ' : _ ( ' Automatic Balancing Line ' ) ,
' move_id ' : self . company_id . account_opening_move_id . id ,
' account_id ' : unaffected_earnings_account . id ,
' debit ' : credit_diff ,
' credit ' : debit_diff ,
' company_id ' : self . company_id ,
} )
self . opening_move_line_ids + = balancing_line