odex25_standard/odex25_base/partner_custom/models/models.py

47 lines
2.4 KiB
Python

import base64
import re
from odoo import models, fields, api, exceptions, tools, _
from datetime import datetime, date, timedelta
from odoo.exceptions import Warning
from odoo.modules.module import get_module_resource
class ResPartner(models.Model):
_inherit = 'res.partner'
identification_type = fields.Selection([('id', 'National ID'),
('iqama', 'Iqama'),
('passport', 'Passport'),
('other', 'Other')], default='id',string='Identification Type')
identification_number = fields.Char(string='Identification NUmber')
identification_issue_date = fields.Date(string='Identification Issue Date')
identification_expiry_date = fields.Date(string='Identification Expiry Date')
issuer = fields.Char(string='Issuer')
copy_no = fields.Integer(string='Copy No')
@api.constrains('identification_expiry_date','identification_type','identification_number', 'identification_issue_date')
def check_expr_date(self):
for each in self:
if self.identification_expiry_date:
exp_date = fields.Date.from_string(each.identification_expiry_date)
if exp_date < date.today():
raise Warning('Your Document Is Expired.')
if self.identification_type=='id':
if len(self.identification_number) != 10:
raise Warning(_('Saudi ID must be 10 digits'))
if self.identification_number[0] != '1':
raise Warning(_('The Saudi ID number should begin with 1'))
if self.identification_type=='iqama':
if len(self.identification_number) != 10:
raise Warning(_('Identity must be 10 digits'))
if self.identification_number[0] != '2' and self.identification_number[0] != '4' and self.identification_number[0] != '3':
raise Warning(_('Identity must begin with 2 or 3 or 4'))
if self.identification_expiry_date and self.identification_issue_date:
if self.identification_expiry_date <= self.identification_issue_date:
raise Warning(_('Error, date of issue must be less than expiry date'))
if date.today() >= self.identification_expiry_date:
raise Warning(_("Error,the expiry date must be greater than the date of the day"))