mirror of
https://github.com/bringout/oca-ocb-l10n_europe.git
synced 2026-04-27 10:42:03 +02:00
19.0 vanilla
This commit is contained in:
parent
ff721d030e
commit
7721452493
1826 changed files with 124775 additions and 274114 deletions
4
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/__init__.py
Normal file
4
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/__init__.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from . import account_journal
|
||||
from . import account_move
|
||||
from . import template_si
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountJournal(models.Model):
|
||||
_inherit = 'account.journal'
|
||||
|
||||
invoice_reference_model = fields.Selection(selection_add=[
|
||||
('si', 'Slovenian 01 (SI01 25-1235-8403)')
|
||||
], ondelete={'si': lambda recs: recs.write({'invoice_reference_model': 'odoo'})})
|
||||
55
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/account_move.py
Normal file
55
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/account_move.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import re
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
def _get_invoice_reference_si_partner(self):
|
||||
"""
|
||||
Generate the Slovenian structured payment reference using the partner's ID.
|
||||
Format: SI01 (P1-P2-P3)K
|
||||
- P1: Last two digits of the invoice year
|
||||
- P2: Partner ID
|
||||
- P3: Journal ID
|
||||
- K: Check digit
|
||||
|
||||
:return: the formatted structured reference string (SI01...)
|
||||
"""
|
||||
self.ensure_one()
|
||||
p3 = str(self.partner_id.id)
|
||||
return self._build_invoice_reference(p3)
|
||||
|
||||
def _get_invoice_reference_si_invoice(self):
|
||||
"""
|
||||
Generate the Slovenian structured payment reference using the invoice sequence number.
|
||||
|
||||
Format: SI01 (P1-P2-P3)K
|
||||
- P1: Last two digits of the invoice year
|
||||
- P2: Trailing digits of the invoice name (sequence number)
|
||||
- P3: Journal ID
|
||||
- K: Check digit
|
||||
|
||||
:return: the formatted structured reference string (SI01...)
|
||||
"""
|
||||
self.ensure_one()
|
||||
match = re.search(r'(\d+)$', self.name or '')
|
||||
p3 = str(int(match.group(1))) if match else '0'
|
||||
return self._build_invoice_reference(p3)
|
||||
|
||||
def _build_invoice_reference(self, p3):
|
||||
"""Builds the reference using a shared structure for both methods."""
|
||||
p1 = str(self.journal_id.id)
|
||||
p2 = str(self.invoice_date.year)[-2:]
|
||||
reference_base = f"{p1}-{p2}-{p3}"
|
||||
|
||||
# Calculate check digit
|
||||
digits = [int(d) for d in reference_base if d.isdigit()]
|
||||
weights = list(range(2, 14))[:len(digits)]
|
||||
weighted_sum = sum(d * w for d, w in zip(reversed(digits), weights))
|
||||
check_digit = 11 - (weighted_sum % 11)
|
||||
check_digit = 0 if check_digit in (10, 11) else check_digit
|
||||
return f"SI01 {reference_base}{check_digit}"
|
||||
34
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/template_si.py
Normal file
34
odoo-bringout-oca-ocb-l10n_si/l10n_si/models/template_si.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import models
|
||||
from odoo.addons.account.models.chart_template import template
|
||||
|
||||
|
||||
class AccountChartTemplate(models.AbstractModel):
|
||||
_inherit = 'account.chart.template'
|
||||
|
||||
@template('si')
|
||||
def _get_si_template_data(self):
|
||||
return {
|
||||
'property_account_receivable_id': 'gd_acc_120000',
|
||||
'property_account_payable_id': 'gd_acc_220000',
|
||||
'code_digits': '6',
|
||||
'use_storno_accounting': True,
|
||||
}
|
||||
|
||||
@template('si', 'res.company')
|
||||
def _get_si_res_company(self):
|
||||
return {
|
||||
self.env.company.id: {
|
||||
'account_fiscal_country_id': 'base.si',
|
||||
'bank_account_code_prefix': '110',
|
||||
'cash_account_code_prefix': '100',
|
||||
'transfer_account_code_prefix': '109',
|
||||
'account_default_pos_receivable_account_id': 'gd_acc_125000',
|
||||
'income_currency_exchange_account_id': 'gd_acc_777000',
|
||||
'expense_currency_exchange_account_id': 'gd_acc_484000',
|
||||
'account_sale_tax_id': 'gd_taxr_3',
|
||||
'account_purchase_tax_id': 'gd_taxp_3',
|
||||
'expense_account_id': 'gd_acc_702000',
|
||||
'income_account_id': 'gd_acc_762000',
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue