# -*- coding: utf-8 -*- from odoo import api, fields, models, _ from odoo.exceptions import UserError, RedirectWarning, ValidationError, except_orm, Warning from datetime import datetime class AccountPeriodLine(models.Model): _name = "account.period.line" reference = fields.Many2one('account.period', string="Reference") start_date = fields.Date('Start Date') end_date = fields.Date('End Date') state = fields.Selection([('Open','Open'),('Closed','Closed')], string="Status", default="Open") def action_close_period(self): for res in self: res.write({'state': 'Closed'}) def action_open_period(self): for res in self: res.write({'state': 'Open'}) class AccountPeriod(models.Model): _name = "account.period" name = fields.Char('Period Name') year = fields.Char('Year') start_date = fields.Date('Start Date') end_date = fields.Date('End Date') line_ids = fields.One2many('account.period.line', 'reference', string='Lines') state = fields.Selection([('Open','Open'),('Closed','Closed')], string="Status", default="Open") def action_create_period(self): for res in self: start_date1 = datetime(int(res.year), 1, 1) end_date1 = datetime(int(res.year), 1, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date1, 'end_date': end_date1 }) start_date2 = datetime(int(res.year), 2, 1) end_date2 = datetime(int(res.year), 2, 28) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date2, 'end_date': end_date2 }) start_date3 = datetime(int(res.year), 3, 1) end_date3 = datetime(int(res.year), 3, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date3, 'end_date': end_date3 }) start_date4 = datetime(int(res.year), 4, 1) end_date4 = datetime(int(res.year), 4, 30) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date4, 'end_date': end_date4 }) start_date5 = datetime(int(res.year), 5, 1) end_date5 = datetime(int(res.year), 5, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date5, 'end_date': end_date5 }) start_date6 = datetime(int(res.year), 6, 1) end_date6 = datetime(int(res.year), 6, 30) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date6, 'end_date': end_date6 }) start_date7 = datetime(int(res.year), 7, 1) end_date7 = datetime(int(res.year), 7, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date7, 'end_date': end_date7 }) start_date8 = datetime(int(res.year), 8, 1) end_date8 = datetime(int(res.year), 8, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date8, 'end_date': end_date8 }) start_date9 = datetime(int(res.year), 9, 1) end_date9 = datetime(int(res.year), 9, 30) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date9, 'end_date': end_date9 }) start_date10 = datetime(int(res.year), 10, 1) end_date10 = datetime(int(res.year), 10, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date10, 'end_date': end_date10 }) start_date11 = datetime(int(res.year), 11, 1) end_date11 = datetime(int(res.year), 11, 30) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date11, 'end_date': end_date11 }) start_date12 = datetime(int(res.year), 12, 1) end_date12 = datetime(int(res.year), 12, 31) self.env['account.period.line'].create({ 'reference': res.id, 'start_date': start_date12, 'end_date': end_date12 })