56 lines
2.6 KiB
Python
56 lines
2.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
|
|
FINANCIAL_STATEMENT_TYPE_SELECTION = [
|
|
("01", "01 - SUPERINTENDENCY OF THE STOCK MARKET - MISCELLANEOUS SECTOR - INDIVIDUAL"),
|
|
("02", "02 - SUPERINTENDENCY OF THE SECURITIES MARKET - INSURANCE SECTOR - INDIVIDUAL"),
|
|
("03", "03 - SUPERINTENDENCY OF THE SECURITIES MARKET - BANKING AND FINANCIAL SECTOR - INDIVIDUAL"),
|
|
("04", "04 - SUPERINTENDENCY OF THE STOCK MARKET - PENSION FUND ADMINISTRATORS (AFP)"),
|
|
("05", "05 - SUPERINTENDENCY OF THE STOCK MARKET - INTERMEDIATION AGENTS"),
|
|
("06", "06 - SUPERINTENDENCY OF THE STOCK MARKET - INVESTMENT FUNDS"),
|
|
("07", "07 - SUPERINTENDENCY OF THE SECURITIES MARKET - ASSETS IN TRUSTS"),
|
|
("08", "08 - SUPERINTENDENCY OF THE STOCK MARKET - ICLV"),
|
|
("09", "09 - OTHERS NOT CONSIDERED IN THE PREVIOUS"),
|
|
]
|
|
|
|
|
|
class ResCompany(models.Model):
|
|
_inherit = 'res.company'
|
|
|
|
l10n_pe_financial_statement_type = fields.Selection(selection=FINANCIAL_STATEMENT_TYPE_SELECTION, string="PLE Type of Financial Statement")
|
|
l10n_pe_shareholder_ids = fields.One2many('l10n_pe_reports_lib.shareholder', 'company_id', string='Shareholders')
|
|
|
|
@api.constrains('l10n_pe_shareholder_ids')
|
|
def _check_l10n_pe_shareholder_percentage(self):
|
|
for record in self:
|
|
if sum(shareholder.shares_percentage for shareholder in record.l10n_pe_shareholder_ids) > 100.0:
|
|
raise ValidationError(_('Sum of shareholder share percentages should not exceed 100%%.'))
|
|
|
|
|
|
class L10nPEShareholder(models.Model):
|
|
_name = 'l10n_pe_reports_lib.shareholder'
|
|
_description = 'Shareholder breakdown for Peruvian reports'
|
|
|
|
company_id = fields.Many2one('res.company', string="Company", required=True)
|
|
partner_id = fields.Many2one('res.partner', string="Partner")
|
|
participation_type_code = fields.Selection(
|
|
selection=[
|
|
("01", "01 - SHARES WITH RIGHT TO VOTE"),
|
|
("02", "02 - SHARES WITHOUT RIGHT TO VOTE"),
|
|
("03", "03 - SOCIAL INTERESTS"),
|
|
("04", "04 - OTHER"),
|
|
],
|
|
string="Participation Type Code",
|
|
)
|
|
shares_qty = fields.Integer(string="Shares Quantity")
|
|
shares_percentage = fields.Float(string="Shares Percentage")
|
|
shares_date = fields.Date(string="Date of incorporation")
|
|
|
|
@api.constrains('shares_percentage')
|
|
def _check_shares_percentage(self):
|
|
for record in self:
|
|
if record.shares_percentage > 100.0 or record.shares_percentage <= 0.0:
|
|
raise ValidationError(_('Share percentages should be between 0%% and 100%%.'))
|