initial commit - l10n_sk_partner
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
_description = 'Partner - Slovak Tax IDs'
|
||||
|
||||
dic = fields.Char(
|
||||
string='DIČ',
|
||||
size=10,
|
||||
help='Daňové identifikačné číslo (napr. 2022538353).',
|
||||
)
|
||||
|
||||
is_vat_payer = fields.Boolean(
|
||||
string='Platca DPH',
|
||||
compute='_compute_is_vat_payer',
|
||||
store=True,
|
||||
help='Automaticky označené ak je vyplnené IČ DPH (VAT) s SK prefixom.',
|
||||
)
|
||||
|
||||
@api.depends('vat')
|
||||
def _compute_is_vat_payer(self):
|
||||
for partner in self:
|
||||
partner.is_vat_payer = bool(
|
||||
partner.vat and partner.vat.upper().startswith('SK')
|
||||
)
|
||||
|
||||
@api.onchange('vat')
|
||||
def _onchange_vat_fill_dic(self):
|
||||
if self.vat and self.vat.upper().startswith('SK'):
|
||||
dic_from_vat = self.vat[2:].strip()
|
||||
if not self.dic:
|
||||
self.dic = dic_from_vat
|
||||
|
||||
@api.constrains('dic')
|
||||
def _check_dic(self):
|
||||
for partner in self:
|
||||
if partner.dic and not re.match(r'^\d{10}$', partner.dic):
|
||||
raise ValidationError(
|
||||
_('DIČ musí obsahovať presne 10 číslic (napr. 2022538353).')
|
||||
)
|
||||
|
||||
@api.constrains('vat')
|
||||
def _check_sk_vat(self):
|
||||
for partner in self:
|
||||
if partner.vat and partner.country_id.code == 'SK':
|
||||
vat = partner.vat.upper().replace(' ', '')
|
||||
if not re.match(r'^SK\d{10}$', vat):
|
||||
raise ValidationError(
|
||||
_('IČ DPH pre Slovensko musí byť vo formáte SK + 10 číslic '
|
||||
'(napr. SK2022538353).')
|
||||
)
|
||||
|
||||
@api.constrains('company_registry')
|
||||
def _check_ico(self):
|
||||
for partner in self:
|
||||
if partner.company_registry and not re.match(r'^\d{8}$', partner.company_registry):
|
||||
raise ValidationError(
|
||||
_('IČO musí obsahovať presne 8 číslic (napr. 43963617).')
|
||||
)
|
||||
|
||||
def _get_company_registry_labels(self):
|
||||
labels = super()._get_company_registry_labels()
|
||||
labels['SK'] = _('IČO')
|
||||
return labels
|
||||
Reference in New Issue
Block a user