diff --git a/ext/custom-addons/dp_custom/models/res_partner.py b/ext/custom-addons/dp_custom/models/res_partner.py
index 8f8bde9c..cb3e7ff9 100644
--- a/ext/custom-addons/dp_custom/models/res_partner.py
+++ b/ext/custom-addons/dp_custom/models/res_partner.py
@@ -26,7 +26,13 @@ from odoo.addons.queue_job.job import job
from odoo import tools, api, fields, models, _
from odoo.exceptions import ValidationError
+from dateutil.relativedelta import relativedelta
+import dateutil.parser
+try:
+ import stdnum.eu.vat as stdnum_vat
+except ImportError:
+ stdnum_vat = None
class PartnerEventListener(Component):
_name = 'res.partner.listener'
@@ -63,7 +69,8 @@ class Partner(models.Model):
partner_sector_id = fields.Many2one(comodel_name='res.partner.sector', string='Branche')
active = fields.Boolean(track_visibility='onchange')
portal_export_pending = fields.Boolean(string='Portal Export ausständig')
- date_vat_check = fields.Date(string='Datum der letzten UID-Prüfung')
+ date_vat_check = fields.Date(string='Datum der letzten UID-Prüfung', default='2000-01-01')
+ warn_vat_date = fields.Boolean(compute='_get_warn_date', store=False, default=False)
collective_bill = fields.Boolean(string='Sammelrechnung', default=True)
country_id = fields.Many2one('res.country', string='Country', ondelete='restrict', default=_default_country_id)
commission_account_ids = fields.Many2many(comodel_name='commission.account', string='Provisionsempfänger')
@@ -74,6 +81,39 @@ class Partner(models.Model):
('portal_id_uniq', 'unique(portal_id)', 'Die Portal-ID muss eindeutig sein')
]
+ @api.multi
+ def _get_warn_date(self):
+ for record in self:
+ if record.date_vat_check:
+ date_today = fields.Date.from_string(fields.Date.context_today(self))
+ warn_date = date_today - relativedelta(months=+3)
+ check_date = dateutil.parser.parse(record.date_vat_check).date()
+ if check_date < warn_date:
+ record.warn_vat_date = True
+
+ @api.multi
+ def action_check_vat(self):
+ for record in self:
+ if record.vat:
+ vat_country, vat_number = self._split_vat(record.vat)
+ try:
+ result = stdnum_vat.check_vies_approx(vat_country+vat_number,"ATU54619104")
+ except Exception as ex:
+ # Avoid blocking the client when the service is unreachable/unavailable
+ return {}
+
+ if not result['valid']:
+ vat_valid = self.vies_vat_check(vat_country, vat_number)
+ if not vat_valid:
+ raise ValidationError(
+ _("UID-INVALID: Die UID '%s' ist ungültig oder hat ein falsches Format") % record.vat)
+
+ record.date_vat_check = fields.Date.today()
+ msg_post = result['countryCode']+result['vatNumber']+'
'\
+ +result['traderName']+'
'+result['traderCompanyType']+'
'+result['traderAddress']\
+ +'
Abfrage-Nr: '+result['requestIdentifier']
+ record.message_post(body='UID-Nr geprüft:
%s' % msg_post)
+
@api.multi
@api.constrains('is_company', 'vat')
def _check_unique_vat(self):
diff --git a/ext/custom-addons/dp_custom/views/product_views.xml b/ext/custom-addons/dp_custom/views/product_views.xml
index 0a3ac137..5f12c708 100644
--- a/ext/custom-addons/dp_custom/views/product_views.xml
+++ b/ext/custom-addons/dp_custom/views/product_views.xml
@@ -116,6 +116,7 @@
+
diff --git a/ext/custom-addons/dp_custom/views/res_partner_views.xml b/ext/custom-addons/dp_custom/views/res_partner_views.xml
index 19448302..dd914f3f 100644
--- a/ext/custom-addons/dp_custom/views/res_partner_views.xml
+++ b/ext/custom-addons/dp_custom/views/res_partner_views.xml
@@ -17,6 +17,18 @@
+
+
+
+
+
+
+
+
+
+